قصد عضویت
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
«Intent to Join» یکی از ویژگیهای جدید فرستنده Android است که به برنامه فرستنده اجازه میدهد به جلسه Cast که توسط برنامهها یا صداهای دیگر آغاز شده است، «پیوسته» شود. شما برنامه فرستنده خود را طوری تنظیم کرده اید که با هدف ایجاد شده توسط Cast SDK راه اندازی شود.
برای مثال، هنگام استفاده از صدا برای شروع یک جلسه Cast، Cast SDK اعلانی ایجاد میکند که به کاربر امکان میدهد پخش را در همه تلفنهای Android در یک شبکه کنترل کند. وقتی روی اعلان ضربه میزنید، Cast SDK قصد راهاندازی برنامه شما را برای پیوستن به جلسه Cast ایجاد میکند.
نمونه CastVideos-Android را برای اجرای کاری Intent to Join ببینید.
استفاده از فرستنده اندروید
برای فعال کردن این ویژگی، مراحل زیر را در برنامه خود انجام دهید:
مطمئن شوید که برنامه شما قبلاً از نسخه Android Sender SDK بالاتر از 11.4.0 استفاده می کند. در build.gradle
:
dependencies {
api 'com.google.android.gms:play-services-cast-framework:11.4.0'
}
یک فیلتر قصد جدید به فعالیتی اضافه کنید که در آن قصد مدیریت آن را دارید. این هدف توسط اعلانهای کنترل از راه دور (RCN) برای راهاندازی برنامه شما و پیوستن به جلسه Cast استفاده میشود. توصیه می کنیم از اکتیویتی استفاده کنید که در آن SessionManagerListener
میزبانی می شود و onSessionStarted()
یا onSessionStartFailed()
فراخوانی می شود. مطمئن شوید که فیلتر قصد جدید در کل سیستم اندروید منحصر به فرد است. توصیه می کنیم برای انجام این کار از تگ <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 Developer Console اضافه شود.

گیرنده شما نیز باید فهرست شده و منتشر شود تا Intent to Join به درستی کار کند.
برای فهرست کردن برنامه خود، گزینه فهرست را روی "YES" تغییر دهید و عنوان، توضیحات و یک گرافیک 512x512 برای برنامه خود ارائه دهید.

پس از راه اندازی، می توانید پیاده سازی را با Remote Control Notifications (RCN) به صورت زیر آزمایش کنید:
- برنامه Google Home را روی تلفن Android نصب کنید و به Wi-Fi تلفن متصل شوید.
- دستگاه دارای Cast-enabled دستگاه Google Home را تحت همان شبکه راهاندازی میکند.
- یک جلسه Cast را با دستگاه Google Home با استفاده از ابزار Command and Control (CaC) ، دستگاه Android یا iOS دیگر، یا از طریق صدا شروع کنید و بررسی کنید که آیا برنامه Web Receiver راه اندازی شده است یا خیر.
- چند ثانیه منتظر بمانید تا RCN روی تلفن دریافت شود، و روی اعلان ضربه بزنید تا intent فعال شود. هدف باید برای هر برنامه ای که قصد را با داده های مورد نیاز برای پیوستن به جلسه ثبت می کند، پخش شود.
SessionManagerListener.onSessionStarted(T, String)
راه اندازی می شود و به جلسه ملحق می شود.
تأیید
اگر برنامه شما با موفقیت به جلسه ملحق شود، SessionManagerListener.onSessionStarted(T, String)
فراخوانی می شود. در غیر این صورت، SessionManagerListener.onSessionStartFailed(T, int)
فراخوانی می شود. با فرض اینکه برنامه شما قبلاً آن رویدادها را به درستی مدیریت می کند (به عنوان مثال، راه اندازی کنترلر یا مینی کنترلر)، دیگر نیازی به انجام کاری ندارید.
جز در مواردی که غیر از این ذکر شده باشد،محتوای این صفحه تحت مجوز Creative Commons Attribution 4.0 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده 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."]]