Triển khai trên Android

Các ví dụ sau đây sẽ giúp bạn triển khai mã thực thể trong Android khách hàng. Lưu ý rằng các ví dụ này sử dụng phạm vi GCM nên phạm vi này chỉ hữu ích cho mục đích minh hoạ vì Giải pháp gửi thông báo qua đám mây của Google đã được ngừng sử dụng.

Thiết lập Dịch vụ Google Play

Để viết ứng dụng, hãy dùng SDK Dịch vụ Google Play, như mô tả trong Thiết lập Google Play SDK Dịch vụ. Thư viện Dịch vụ Google Play bao gồm thư viện mã phiên bản.

Tải mã phiên bản

Dòng mã sau đây trả về một Mã phiên bản:

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

Tạo mã thông báo

Để tạo mã thông báo, bạn cần có Mã dự án do Bảng điều khiển dành cho nhà phát triển của Google.

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

Quản lý mã thông báo và mã phiên bản

Mã phiên bản cho phép bạn xoá và làm mới mã thông báo.

Xoá mã thông báo và mã phiên bản

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

Bạn cũng có thể xoá chính mã phiên bản, bao gồm cả mọi mã phiên bản được liên kết mã thông báo. Lần tới khi gọi getInstance(), bạn sẽ nhận được một Mã phiên bản:

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

Làm mới mã

Dịch vụ mã thực thể sẽ bắt đầu lệnh gọi lại theo định kỳ (ví dụ: mỗi 6 tháng), yêu cầu ứng dụng làm mới mã thông báo. Việc này cũng có thể bắt đầu lệnh gọi lại khi:

  • Có vấn đề bảo mật; ví dụ: các vấn đề về SSL hoặc nền tảng.
  • Thông tin thiết bị không còn hợp lệ; ví dụ: sao lưu và khôi phục.
  • Dịch vụ mã thực thể sẽ bị ảnh hưởng.

Triển khai dịch vụ trình nghe mã phiên bản trong ứng dụng của bạn để nhận những dữ liệu này lệnh gọi lại:

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

Bạn cũng phải định cấu hình dịch vụ này trong tệp kê khai cho dự án:

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