نية الانضمام
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
"نيّة الانضمام" هي ميزة جديدة لمرسل Android تتيح
تطبيق المرسل إلى "الانضمام" جلسة بث تبدأها تطبيقات أخرى أو
الصوت. أعددتَ تطبيق المرسل ليتم تشغيله من خلال هدف تم إنشاؤه بواسطة Cast
SDK.
على سبيل المثال، عند استخدام الصوت لبدء جلسة Google Cast، تنشئ حزمة تطوير البرامج للإرسال
إشعار يتيح للمستخدم التحكّم في تشغيل المحتوى على جميع هواتف Android
على نفس الشبكة. عند النقر على الإشعار، تنشئ حزمة تطوير البرامج (SDK) لـ Cast
نية تشغيل تطبيقك للانضمام إلى جلسة البث.
يمكنك الاطّلاع على
نموذج Cast Videos-Android
لتنفيذ Intent to Join.
باستخدام مرسِل Android
لتفعيل هذه الميزة، عليك اتّباع الخطوات التالية في تطبيقك:
تأكَّد من أنّ تطبيقك يستخدم حاليًا إصدار أحدث من حزمة تطوير البرامج (SDK) للمرسِلين من نظام Android.
11.4.0. في build.gradle
:
dependencies {
api 'com.google.android.gms:play-services-cast-framework:11.4.0'
}
أضِف فلتر أهداف جديدًا إلى نشاط تريد معالجة الغرض فيه. تشير رسالة الأشكال البيانية
سيتم استخدام intent بواسطة إشعارات التحكم عن بُعد (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)
}
...
}
@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
لاستخدام ميزة Intent to Join، يجب أن يكون معرّف الموارد المنتظم (URI) للتطبيق واسم الحزمة
تمت إضافتها في
وحدة تحكّم المطوّرين في Google Cast

يجب أيضًا إدراج جهاز المُستلِم ونشره حتى تعمل ميزة Intent to Join
بشكل صحيح.
لإدراج تطبيقك، يُرجى تفعيل خيار بطاقة بيانات المتجر على "نعم" وتقديم عنوان
ووصفًا ورسمًا بحجم 512x512 لتطبيقك.

بعد الانتهاء من الإعداد، يمكنك اختبار التنفيذ باستخدام إشعارات وحدة التحكّم عن بُعد
(RCN) على النحو التالي:
- ثبِّت تطبيق Google Home على هاتف Android واتصل بشبكة Wi-Fi على
هاتفك.
- يعمل الجهاز الذي يعمل بتكنولوجيا Google Cast على إعداد جهاز Google Home باستخدام الشبكة نفسها.
- يمكنك بدء جلسة بث باستخدام جهاز Google Home باستخدام
أداة الأوامر والتحكّم (CaC)
على جهاز Android أو iOS آخر، أو من خلال الصوت والتحقق مما إذا كان جهاز استقبال الويب
تم إطلاق تطبيقك.
- انتظِر بضع ثوانٍ للحصول على RCN على الهاتف، ثم انقر على الإشعار من أجل
تؤدي إلى تحقيق الهدف. ينبغي بث الهدف إلى أي تطبيق
يتم تسجيل الغرض في البيانات المطلوبة للانضمام إلى الجلسة.
SessionManagerListener.onSessionStarted(T, String)
سينضم إلى الجلسة.
التحقّق
إذا انضم تطبيقك إلى الجلسة بنجاح،
SessionManagerListener.onSessionStarted(T, String)
البيانات. وإلا،
SessionManagerListener.onSessionStartFailed(T, int)
البيانات. بافتراض أن تطبيقك يتعامل بالفعل مع هذه الأحداث بشكل صحيح (
مثل إطلاق وحدة تحكم موسّعة أو وحدة تحكم مصغّرة)، فليس عليكم
القيام بأي شيء آخر.
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2025-07-25 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-25 (حسب التوقيت العالمي المتفَّق عليه)"],[[["\u003cp\u003eThe "Intent to Join" feature enables Android sender apps to join existing Cast sessions initiated by other apps or voice commands.\u003c/p\u003e\n"],["\u003cp\u003eTo enable this, add a specific intent filter to your activity, update your Android Sender SDK, and configure your app in the Google Cast Developer Console.\u003c/p\u003e\n"],["\u003cp\u003eThe Cast SDK creates an intent that launches your app and allows it to join the session when a user interacts with a Cast notification.\u003c/p\u003e\n"],["\u003cp\u003eVerify successful implementation by checking if \u003ccode\u003eSessionManagerListener.onSessionStarted\u003c/code\u003e or \u003ccode\u003eSessionManagerListener.onSessionStartFailed\u003c/code\u003e is called appropriately.\u003c/p\u003e\n"],["\u003cp\u003eRefer to the CastVideos-Android sample for a working implementation of the Intent to Join feature.\u003c/p\u003e\n"]]],["The \"Intent to Join\" feature allows an Android sender app to join an existing Cast session. To enable it, ensure the app uses Android Sender SDK version 11.4.0 or greater, add a unique intent filter to an activity, and call `SessionManager.startSession(Intent)` in `onResume()`. The app URI and package name must be added to the Google Cast Developer Console, and the receiver must be listed. Tapping a Remote Control Notification triggers an intent, starting a session and calling `onSessionStarted()` if successful, otherwise `onSessionStartFailed()` is called.\n"],null,["# Intent to Join\n\n\"Intent to Join\" is a new feature of the Android Sender that allows a\nsender app to \"join\" a Cast session that has been initiated by other apps or\nvoice. You set up your sender app to be launched by an intent created by Cast\nSDK.\n\nFor example, when using voice to start a Cast session, Cast SDK creates a\nnotification that allows a user to control the playback on all Android phones\non the same network. When the notification is tapped, Cast SDK creates the\nintent to launch your app to join the Cast session.\n\nSee the\n[CastVideos-Android sample](https://github.com/googlecast/CastVideos-android)\nfor a working implementation of Intent to Join.\n\nUsing an Android Sender\n-----------------------\n\nTo enable this feature, perform the following steps in your app:\n\nMake sure your app is already using Android Sender SDK version greater than\n11.4.0. In `build.gradle`: \n\n dependencies {\n api 'com.google.android.gms:play-services-cast-framework:11.4.0'\n }\n\nAdd a new intent filter to an activity where you want to handle the intent. The\nintent will be used by Remote Control Notifications (RCN) to launch your app\nand join a Cast session.\nWe recommend you use the activity where\n[`SessionManagerListener`](/cast/docs/reference/android/com/google/android/gms/cast/framework/SessionManagerListener)\nis hosted, and either\n[`onSessionStarted()`](/cast/docs/reference/android/com/google/android/gms/cast/framework/SessionManagerListener#onSessionStarted(T,%20java.lang.String))\nor\n[`onSessionStartFailed()`](/cast/docs/reference/android/com/google/android/gms/cast/framework/SessionManagerListener#onSessionStartFailed(T,%20int))\nwill be called.\nMake sure the new intent filter is unique across the entire Android system. We\nrecommend you use the `\u003cdata\u003e` tag to do that, as follows: \n\n \u003cintent-filter\u003e\n \u003caction android:name=\"android.intent.action.VIEW\" /\u003e\n \u003ccategory android:name=\"android.intent.category.DEFAULT\" /\u003e\n \u003ccategory android:name=\"android.intent.category.BROWSABLE\" /\u003e\n \u003cdata android:scheme=\"your_app_scheme\" android:host=\"your_app_host\"\n android:path=\"your_app_path\"/\u003e\n \u003c/intent-filter\u003e\n\nExamples of `\u003cdata\u003e` tag: \n\n \u003cdata android:scheme=\"https\" android:host=\"example.com\"\n android:path=\"/cast/join\"/\u003e\n\nIn the activity where you define the new intent filter, call\n[`SessionManager.startSession(Intent)`](/cast/docs/reference/android/com/google/android/gms/cast/framework/SessionManager#startSession(android.content.Intent))\nin `onResume()`:\nKotlin \n\n```kotlin\noverride fun onResume() {\n ...\n val intent = intent\n // Intent with format: \"\u003cyour_app_scheme\u003e://\u003cyour_app_host\u003e\u003cyour_app_path\u003e\"\n val intentToJoinUri = Uri.parse(\"https://example.com/cast/join\")\n if (intent.data != null && intent.data == intentToJoinUri) {\n mCastContext.sessionManager.startSession(intent)\n }\n ...\n}\n```\nJava \n\n```java\n@Override\nprotected void onResume() {\n ...\n Intent intent = getIntent();\n // Intent with format: \"\u003cyour_app_scheme\u003e://\u003cyour_app_host\u003e\u003cyour_app_path\u003e\"\n Uri intentToJoinUri = Uri.parse(\"https://example.com/cast/join\");\n if (intent.getData() != null && intent.getData().equals(intentToJoinUri)) {\n mCastContext.getSessionManager().startSession(intent);\n }\n ...\n}\n```\n\nGoogle Cast Developer Console setup\n-----------------------------------\n\nTo utilize the Intent to Join feature, the app URI and package name must be\nadded in the\n[Google Cast Developer Console](https://cast.google.com/publish/#/overview).\n\nYour receiver must also be listed and published for Intent to Join to work\nproperly.\n\nTo list your app, toggle the listing option to \"YES\" and provide a title,\ndescription, and a 512x512 graphic for your app.\n\nAfter setup, you can test the implementation with Remote Control Notifications\n(RCN) as below:\n\n1. Install the Google Home App on an Android phone, and connect to Wi-Fi on the phone.\n2. The Cast-enabled device sets up the Google Home device under the same network.\n3. Initiate a Cast session with the Google Home device using the [Command and Control (CaC) Tool](https://casttool.appspot.com/cactool/), another Android or iOS device, or through voice and check if the Web Receiver app is launched.\n4. Wait for a few seconds to get RCN on the phone, and tap the notification to trigger the intent. The intent should be broadcasted to any app that registers the intent with the required data to join the session.\n\n[`SessionManagerListener.onSessionStarted(T, String)`](/cast/docs/reference/android/com/google/android/gms/cast/framework/SessionManagerListener#onSessionStarted(T,%20java.lang.String))\nwill be triggered and join the session.\n\nVerification\n------------\n\nIf your app successfully joins the session,\n[`SessionManagerListener.onSessionStarted(T, String)`](/cast/docs/reference/android/com/google/android/gms/cast/framework/SessionManagerListener#onSessionStarted(T,%20java.lang.String))\nis called. Otherwise,\n[`SessionManagerListener.onSessionStartFailed(T, int)`](/cast/docs/reference/android/com/google/android/gms/cast/framework/SessionManagerListener#onSessionStartFailed(T,%20int))\nis called. Assuming your app already handles those events properly (for\nexample, launching expanded controller or mini controller), you don't have to\ndo anything further."]]