التنفيذ في نظام التشغيل Android

ستساعدك الأمثلة التالية على تنفيذ معرّف المثيل في برنامج Android. لاحظ أن هذه الأمثلة تستخدم نطاق GCM، والذي يكون مفيدًا فقط لأغراض التوضيح لأن خدمة Google Cloud Messaging تم إيقافها عن الاستخدام.

إعداد "خدمات Google Play"

لكتابة تطبيق العميل الخاص بك، استخدِم "حزمة تطوير البرامج (SDK) لخدمات Google Play"، كما هو موضّح في إعداد حزمة تطوير البرامج لخدمات Google Play. تتضمن "مكتبة خدمات Play" مكتبة Instance ID.

الحصول على رقم تعريف مثيل

يعرض سطر التعليمة البرمجية التالي معرّف مثيل:

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 أشهر)، تطلب من تطبيقك تحديث الرموز المميزة الخاصة به. وقد يبدأ أيضًا عمليات معاودة الاتصال عندما:

  • هناك مشاكل تتعلق بالأمان، على سبيل المثال، مشاكل في طبقة المقابس الآمنة أو النظام الأساسي.
  • لم تعُد معلومات الجهاز صالحة، على سبيل المثال، الاحتفاظ بنسخة احتياطية من البيانات واستعادتها.
  • تتأثر خدمة "رقم تعريف المثيل".

يمكنك تنفيذ خدمة معالجة ملفات تعريف المثيل في تطبيقك لتلقّي عمليات الاسترداد التالية:

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>