הטמעה ב-Android

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

הגדרה של Google Play Services

כדי לכתוב את אפליקציית הלקוח, צריך להשתמש ב-SDK של Google Play Services, כפי שמתואר במאמר הגדרה של 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 יוזם קריאות חוזרות (callback) מעת לעת (לדוגמה, כל 6 חודשים), ומבקש מהאפליקציה לרענן את האסימונים שלה. יכול להיות שהוא גם יזום שיחות חוזרות במקרים הבאים:

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

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

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>