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

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

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

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

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

يعرض السطر التالي من الرمز رقم تعريف المثيل:

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

  • هناك مشاكل متعلقة بالأمان، مثل مشاكل طبقة المقابس الآمنة (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>