Các ví dụ sau đây sẽ giúp bạn triển khai Mã thực thể trong ứng dụng Android. Xin lưu ý rằng các ví dụ này sử dụng phạm vi GCM. Phạm vi này chỉ hữu ích cho mục đích minh hoạ vì Google Cloud Messaging đã ngừng hoạt động.
Thiết lập Dịch vụ Google Play
Để viết ứng dụng khách, hãy sử dụng SDK Dịch vụ Google Play, như mô tả trong bài viết Thiết lập SDK Dịch vụ Google Play. Thư viện Dịch vụ Play bao gồm thư viện Mã thực thể.
Nhận mã thực thể
Dòng mã sau đây trả về một mã thực thể:
String iid = InstanceID.getInstance(context).getId();
Tạo mã thông báo
Việc tạo mã thông báo yêu cầu có Mã dự án do Google Developers Console tạo.
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ã thực thể
Mã thực thể cho phép bạn xoá và làm mới mã thông báo.
Xoá mã thông báo và mã thực thể
String authorizedEntity = PROJECT_ID;
String scope = "GCM";
InstanceID.getInstance(context).deleteToken(authorizedEntity,scope);
Bạn cũng có thể xoá chính mã thực thể, bao gồm cả tất cả mã thông báo được liên kết. Lần tiếp theo bạn gọi getInstance() bạn sẽ nhận được một
mã thực thể mới:
InstanceID.getInstance(context).deleteInstanceID();
String newIID = InstanceID.getInstance(context).getId();
Làm mới mã thông báo
Dịch vụ Mã thực thể định kỳ (ví dụ: 6 tháng một lần) bắt đầu các lệnh gọi lại, yêu cầu ứng dụng của bạn làm mới mã thông báo. Dịch vụ này cũng có thể bắt đầu các lệnh gọi lại khi:
- Có vấn đề về bảo mật, ví dụ: 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ể bị ảnh hưởng theo cách khác.
Triển khai dịch vụ trình nghe Mã thực thể trong ứng dụng để nhận các lệnh gọi lại này:
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>