כוונת הצטרפות

'כוונת הצטרפות' היא תכונה חדשה של שולח ה-Android שמאפשרת לאפליקציית שולח "להצטרף" לסשן העברה שהופעל על ידי אפליקציות או קול אחרים. עליכם להגדיר את אפליקציית השולח כך שתופעל על ידי Intent שנוצר על ידי Cast SDK.

לדוגמה, כשמשתמשים בקול כדי להתחיל סשן העברה (Cast), Cast SDK יוצר התראה שמאפשרת למשתמש לשלוט בהפעלה בכל הטלפונים עם Android באותה הרשת. כאשר מקישים על ההתראה, Cast SDK יוצר כוונה להפעיל את האפליקציה כדי להצטרף לסשן ההעברה.

עיינו בדוגמה של CastVideos-Android להטמעה תקינה של Intent to join.

שימוש ב-Android Sender

כדי להפעיל את התכונה הזו, יש לבצע את השלבים הבאים באפליקציה:

צריך לוודא שבאפליקציה שלכם כבר מותקנת גרסת Android Sender SDK שקודמת ל-11.4.0. ב-build.gradle:

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

יש להוסיף מסנן Intent חדש לפעילות שבה רוצים לטפל ב-Intent. המטרה של שליחת ההתראות בשלט הרחוק (RCN) תתבסס על הבקשה כדי להפעיל את האפליקציה ולהצטרף לסשן של העברה (cast). מומלץ להשתמש בפעילות שבה מתארח SessionManagerListener, והקריאה ל-onSessionStarted() או ל-onSessionStartFailed(). יש לוודא שמסנן Intent החדש הוא ייחודי בכל מערכת 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"/>

בפעילות שבה הגדרתם את מסנן Intent החדש, מפעילים את הפקודה 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 Developer Console

כדי להשתמש בתכונה Intent to join, צריך להוסיף את ה-URI של האפליקציה ואת שם החבילה ב-Google Cast Developer Console.

בנוסף, על המקבל להיות רשום ולפרסם כדי ש-Intent to join יפעל בצורה תקינה.

כדי להציג את האפליקציה, מחליפים את מצב האפשרות ל'כן' ומצרפים כותרת, תיאור וגרפיקה בגודל 512x512 לאפליקציה.

לאחר ההגדרה, תוכלו לבדוק את ההטמעה באמצעות התראות שלט רחוק (RCN) באופן הבא:

  1. מתקינים את אפליקציית Google Home בטלפון Android ומתחברים ל-Wi-Fi בטלפון.
  2. המכשיר התומך ב-Cast מגדיר את מכשיר Google Home באותה רשת.
  3. התחילו סשן העברה (cast) באמצעות מכשיר Google Home באמצעות כלי Command and Control (CaC), מכשיר Android או iOS אחר או באמצעות הקול, ובדקו אם האפליקציה Web Receiver הופעלה.
  4. ממתינים מספר שניות עד להצגת ה-RCN, ומקישים על ההתראה כדי להפעיל את הכוונה. יש לשדר את ה-Intent לכל אפליקציה שרושמת את ה-Intent עם הנתונים הנדרשים כדי להצטרף לסשן.

המשתמש SessionManagerListener.onSessionStarted(T, String) יופעל ויצטרף לסשן.

אימות

אם האפליקציה הצטרפה לסשן, תתבצע קריאה ל-SessionManagerListener.onSessionStarted(T, String). אחרת, מתבצעת קריאה ל-SessionManagerListener.onSessionStartFailed(T, int). בהנחה שהאפליקציה כבר מטפלת באירועים האלה כמו שצריך (לדוגמה, הפעלה של בקר מורחב או מיני-בקר), אין צורך לבצע פעולה נוספת.