ستساعدك الأمثلة التالية في تنفيذ Instance ID في عميل Android. يُرجى العِلم أنّ هذه الأمثلة تستخدِم نطاق GCM، وهو مفيد فقط لأغراض توضيحية لأنّه تم إيقاف Google Cloud Messaging نهائيًا.
إعداد "خدمات 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 أشهر)، وتطلب من تطبيقك إعادة إنشاء الرموز المميزة. وقد يبدأ أيضًا عمليات رد الاتصال في الحالات التالية:
- هناك مشاكل أمنية، مثل مشاكل في بروتوكول 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>