הטמעה ב-Android

הדוגמאות הבאות יעזרו לכם להטמיע מזהה מופע בלקוח Android. שימו לב שהדוגמאות האלה משתמשות בהיקף GCM, שמועיל רק למטרות הדגמה כי השימוש ב-Google Cloud Messaging הופסק.

הגדרה של Google Play Services

כדי לכתוב את אפליקציית הלקוח, צריך להשתמש ב-Google Play Services SDK, כמו שמתואר במאמר הגדרה של Google Play Services SDK. ספריית Play Services כוללת את ספריית מזהה המופע.

קבלת מזהה מכונה

שורת הקוד הבאה מחזירה מזהה מופע:

String iid = InstanceID.getInstance(context).getId();

יצירת טוקן

כדי ליצור טוקנים, צריך מזהה פרויקט שנוצר על ידי Google Developers Console.

String authorizedEntity = PROJECT_ID; // Project id from Google Developer Console
String scope = "GCM"; // e.g. communicating using GCM, but you can use any
                      // URL-safe characters up to a maximum of 1000, or
                      // you can also leave it blank.
String token = InstanceID.getInstance(context).getToken(authorizedEntity,scope);

ניהול טוקנים ומזהי מכונה

מזהה המופע מאפשר לכם למחוק ולרענן אסימונים.

מחיקת טוקנים ומזהי מכונה

String authorizedEntity = PROJECT_ID;
String scope = "GCM";
InstanceID.getInstance(context).deleteToken(authorizedEntity,scope);

אפשר גם למחוק את מזהה המופע עצמו, כולל כל האסימונים שמשויכים אליו. בפעם הבאה שתתקשרו אל getInstance() תקבלו מזהה מופע חדש:

InstanceID.getInstance(context).deleteInstanceID();
String newIID = InstanceID.getInstance(context).getId();

אסימוני רענון

שירות Instance ID יוזם קריאות חוזרות מעת לעת (לדוגמה, כל 6 חודשים), ומבקש מהאפליקציה לרענן את האסימונים שלה. יכול להיות שהוא גם יזום שיחות חוזרות במקרים הבאים:

  • יש בעיות אבטחה, למשל בעיות ב-SSL או בפלטפורמה.
  • פרטי המכשיר כבר לא תקפים, למשל גיבוי ושחזור.
  • אחרת, שירות מזהה המופע מושפע.

מטמיעים באפליקציה את שירות המאזין של מזהה המופע כדי לקבל את הקריאות החוזרות האלה:

public class MyInstanceIDService extends InstanceIDListenerService {
  public void onTokenRefresh() {
    refreshAllTokens();
  }

  private void refreshAllTokens() {
    // assuming you have defined TokenList as
    // some generalized store for your tokens
    ArrayList<TokenList> tokenList = TokensList.get();
    InstanceID iid = InstanceID.getInstance(this);
    for(tokenItem : tokenList) {
      tokenItem.token =
        iid.getToken(tokenItem.authorizedEntity,tokenItem.scope,tokenItem.options);
      // send this tokenItem.token to your server
    }
  }
};

צריך גם להגדיר את השירות הזה בקובץ המניפסט של הפרויקט:

<service android:name=".MyInstanceIDService" android:exported="false">
  <intent-filter>
        <action android:name="com.google.android.gms.iid.InstanceID"/>
  </intent-filter>
</service>