نية الانضمام

"هدف الانضمام" هي ميزة جديدة في مُرسِل Android تسمح لتطبيق المُرسِل بالانضمام إلى جلسة بث بدأتها تطبيقات أخرى أو صوت. لقد أعددت تطبيق المُرسِل ليتم تشغيله بواسطة هدف تم إنشاؤه بواسطة حزمة تطوير البرامج (SDK) للبث.

على سبيل المثال، عند استخدام الصوت لبدء جلسة بث، تنشئ حزمة تطوير البرامج (SDK) لميزة Cast إشعارًا يتيح للمستخدم التحكم في التشغيل على جميع هواتف Android المتصلة بالشبكة نفسها. عند النقر على الإشعار، ينشئ Cast SDK هدف تشغيل تطبيقك للانضمام إلى جلسة البث.

يمكنك الاطّلاع على نموذج Castالفيديوهات-Android للاطّلاع على آلية تنفيذ Intent to Join.

استخدام أحد مُرسِلي Android

لتفعيل هذه الميزة، يمكنك اتّباع الخطوات التالية في تطبيقك:

تأكّد من أنّ تطبيقك يستخدم حاليًا الإصدار 11.4.0 من حزمة تطوير البرامج (SDK) لمرسِلي Android في build.gradle:

dependencies {
    api 'com.google.android.gms:play-services-cast-framework:11.4.0'
}

أضِف فلتر أهداف جديدًا إلى نشاط تريد معالجة الغرض منه. سيتم استخدام الهدف من خلال إشعارات التحكم عن بُعد (RCN) لتشغيل التطبيق والانضمام إلى جلسة البث. ننصحك باستخدام النشاط الذي تتم فيه استضافة SessionManagerListener وسيتم استدعاء onSessionStarted() أو onSessionStartFailed(). تأكّد من أن فلتر الأهداف الجديد فريد في نظام Android بالكامل. ننصحك باستخدام العلامة <data> لإجراء ذلك، على النحو التالي:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="your_app_scheme" android:host="your_app_host"
        android:path="your_app_path"/>
</intent-filter>

أمثلة على علامة <data>:

<data android:scheme="https" android:host="example.com"
      android:path="/cast/join"/>

في النشاط الذي تحدّد فيه فلتر الأهداف الجديد، استدعِ SessionManager.startSession(Intent) في onResume():

كوتلين
override fun onResume() {
    ...
    val intent = intent
    // Intent with format: "<your_app_scheme>://<your_app_host><your_app_path>"
    val intentToJoinUri = Uri.parse("https://example.com/cast/join")
    if (intent.data != null && intent.data == intentToJoinUri) {
        mCastContext.sessionManager.startSession(intent)
    }
    ...
}
Java
@Override
protected void onResume() {
    ...
    Intent intent = getIntent();
    // Intent with format: "<your_app_scheme>://<your_app_host><your_app_path>"
    Uri intentToJoinUri = Uri.parse("https://example.com/cast/join");
    if (intent.getData() != null && intent.getData().equals(intentToJoinUri)) {
        mCastContext.getSessionManager().startSession(intent);
    }
    ...
}

إعداد وحدة تحكم المطوّرين في Google Cast

لاستخدام ميزة "هدف الانضمام"، يجب إضافة معرّف الموارد المنتظم (URI) للتطبيق واسم الحزمة في وحدة تحكم مطوّري برامج Google Cast.

يجب أيضًا إدراج المستلِم ونشره لكي يعمل Intent to Join بشكل صحيح.

لإدراج تطبيقك، بدِّل خيار الإدراج إلى "نعم" وقدِّم عنوانًا ووصفًا ورسمًا بمقاس 512×512 لتطبيقك.

بعد الإعداد، يمكنك اختبار التنفيذ باستخدام إشعارات التحكّم عن بُعد (RCN) كما يلي:

  1. ثبِّت تطبيق Google Home على هاتف Android واتصل بشبكة Wi-Fi على الهاتف.
  2. يعمل الجهاز المزوّد بتكنولوجيا Google Cast على إعداد جهاز Google Home بالشبكة نفسها.
  3. يمكنك بدء جلسة بث من جهاز Google Home باستخدام أداة الأوامر والتحكّم (CaC) أو جهاز Android أو جهاز iOS آخر، أو عبر الصوت والتحقّق ممّا إذا كان قد تم إطلاق تطبيق Web افتراضية.
  4. انتظِر بضع ثوانٍ للحصول على RCN على الهاتف، ثم انقر على الإشعار لتشغيل الغرض. يجب بث الغرض إلى أي تطبيق يُسجِّل النية بالبيانات المطلوبة للانضمام إلى الجلسة.

SessionManagerListener.onSessionStarted(T, String) وسينضم إلى الجلسة.

إثبات الملكية

في حال انضمام تطبيقك إلى الجلسة بنجاح، يتم استدعاء SessionManagerListener.onSessionStarted(T, String). وبخلاف ذلك، يتم استدعاء SessionManagerListener.onSessionStartFailed(T, int). بافتراض أن تطبيقك يعالج هذه الأحداث بشكل صحيح (على سبيل المثال، تشغيل وحدة تحكم موسّعة أو وحدة تحكم مصغّرة)، لن تضطر إلى اتخاذ أي إجراء آخر.