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

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

إعداد "خدمات 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();

الرموز المميّزة لإعادة التحميل

تبدأ خدمة Instance ID عمليات الاستدعاء بشكل دوري (على سبيل المثال، كل 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>