پیاده سازی اندروید

مثال‌های زیر به شما در پیاده‌سازی Instance ID در یک کلاینت اندروید کمک می‌کنند. توجه داشته باشید که این مثال‌ها از محدوده GCM استفاده می‌کنند که فقط برای اهداف نمایشی مفید است زیرا Google Cloud Messaging دیگر استفاده نمی‌شود.

خدمات گوگل پلی را تنظیم کنید

برای نوشتن برنامه کلاینت خود، از SDK سرویس‌های گوگل پلی، همانطور که در بخش «راه‌اندازی SDK سرویس‌های گوگل پلی» توضیح داده شده است، استفاده کنید. کتابخانه سرویس‌های پلی شامل کتابخانه Instance ID است.

دریافت شناسه نمونه

خط کد زیر یک شناسه نمونه (Instance ID) را برمی‌گرداند:

String iid = InstanceID.getInstance(context).getId();

یک توکن تولید کنید

تولید توکن‌ها نیاز به یک شناسه پروژه دارد که توسط کنسول توسعه‌دهندگان گوگل تولید شده است.

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);

همچنین می‌توانید خودِ شناسه‌ی نمونه (Instance ID) را به همراه تمام توکن‌های مرتبط حذف کنید. دفعه‌ی بعد که getInstance() را فراخوانی کنید، یک شناسه‌ی نمونه‌ی جدید دریافت خواهید کرد:

InstanceID.getInstance(context).deleteInstanceID();
String newIID = InstanceID.getInstance(context).getId();

توکن‌های تازه‌سازی

سرویس Instance ID به صورت دوره‌ای (مثلاً هر ۶ ماه) فراخوانی‌های برگشتی را آغاز می‌کند و از برنامه شما درخواست می‌کند که توکن‌های خود را به‌روزرسانی کند. همچنین ممکن است در موارد زیر فراخوانی‌های برگشتی را آغاز کند:

  • مشکلات امنیتی وجود دارد؛ برای مثال، مشکلات SSL یا پلتفرم.
  • اطلاعات دستگاه دیگر معتبر نیست؛ برای مثال، پشتیبان‌گیری و بازیابی.
  • سرویس Instance ID در غیر این صورت تحت تأثیر قرار می‌گیرد.

سرویس شنونده‌ی 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
    }
  }
};

همچنین باید این سرویس را در فایل Manifest پروژه پیکربندی کنید:

<service android:name=".MyInstanceIDService" android:exported="false">
  <intent-filter>
        <action android:name="com.google.android.gms.iid.InstanceID"/>
  </intent-filter>
</service>