ตัวอย่างต่อไปนี้จะช่วยคุณในการติดตั้งใช้งานรหัสอินสแตนซ์ในไคลเอ็นต์ Android โปรดทราบว่าตัวอย่างเหล่านี้ใช้ขอบเขต GCM ซึ่งจะเป็นประโยชน์สำหรับการสาธิตเท่านั้น เนื่องจากเราได้เลิกใช้การรับส่งข้อความในระบบคลาวด์ของ Google แล้ว
ตั้งค่าบริการ Google Play
หากต้องการเขียนแอปพลิเคชันไคลเอ็นต์ ให้ใช้ SDK บริการ Google Play ตามที่อธิบายไว้ในตั้งค่า SDK บริการ Google Play ไลบรารีบริการ Google 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();
รีเฟรชโทเค็น
บริการรหัสอินสแตนซ์จะเริ่ม Callback เป็นระยะๆ (เช่น ทุก 6 เดือน) โดยขอให้แอปของคุณรีเฟรชโทเค็น นอกจากนี้ยังอาจเริ่มต้น Callback ในกรณีต่อไปนี้
- มีปัญหาด้านความปลอดภัย เช่น ปัญหา SSL หรือแพลตฟอร์ม
- ข้อมูลอุปกรณ์ไม่ถูกต้องอีกต่อไป เช่น การสำรองและกู้คืนข้อมูล
- บริการรหัสอินสแตนซ์จะได้รับผลกระทบ
ใช้บริการ Listener รหัสอินสแตนซ์ในแอปเพื่อรับ 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
}
}
};
คุณต้องกำหนดค่าบริการนี้ในไฟล์ Manifest ของโปรเจ็กต์ด้วย ดังนี้
<service android:name=".MyInstanceIDService" android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID"/>
</intent-filter>
</service>