הטמעה ב-Android

הדוגמאות הבאות יעזרו לכם להטמיע מזהה מכונה ב-Android הלקוח. לתשומת ליבכם: הדוגמאות האלה מתבססות על היקף GCM, שיכול להיות שימושי רק. למטרות הדגמה, הכלי העברת הודעות בענן של Google יצא משימוש.

הגדרת Google Play Services

כדי לכתוב את אפליקציית הלקוח, צריך להשתמש ב-SDK של Google Play Services . כפי שמתואר בהגדרת Google Play 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();

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

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

  • יש בעיות אבטחה; לדוגמה, בעיות 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>