Implementasi Android

Contoh berikut akan membantu Anda menerapkan Instance ID di Android dengan klien besar. Perhatikan bahwa contoh-contoh ini menggunakan ruang lingkup GCM, yang hanya berguna untuk tujuan demonstrasi karena Google Cloud Messaging telah tidak lagi digunakan.

Siapkan Layanan Google Play

Untuk menulis aplikasi klien Anda, gunakan SDK layanan Google Play, seperti yang dijelaskan dalam Menyiapkan Google Play SDK Layanan. Library Layanan Play menyertakan library Instance ID.

Mendapatkan ID Instance

Baris kode berikut menampilkan ID Instance:

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

Membuat token

Pembuatan token memerlukan Project ID yang dibuat oleh Konsol Google Play.

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

Mengelola token dan ID Instance

ID instance memungkinkan Anda menghapus dan memuat ulang token.

Menghapus token dan ID Instance

String authorizedEntity = PROJECT_ID;
String scope = "GCM";
InstanceID.getInstance(context).deleteToken(authorizedEntity,scope);

Anda juga dapat menghapus ID Instance itu sendiri, termasuk semua token kata. Saat berikutnya Anda menelepon getInstance(), Anda akan mendapatkan ID Instance:

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

Token refresh

Layanan ID Instance memulai callback secara berkala (misalnya setiap 6 bulan), meminta agar aplikasi Anda memperbarui tokennya. Mungkin juga memulai callback saat:

  • Ada masalah keamanan; misalnya, masalah SSL atau platform.
  • Informasi perangkat tidak lagi valid; misalnya, pencadangan dan pemulihan.
  • Jika tidak, layanan ID Instance akan terpengaruh.

Implementasikan layanan pemroses ID Instance di aplikasi Anda untuk menerima instance callback:

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

Anda juga harus mengonfigurasi layanan ini dalam file Manifes untuk project:

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