ตัวอย่างต่อไปนี้จะช่วยคุณติดตั้งใช้งาน Instance ID ในไคลเอ็นต์ Android โปรดทราบว่าตัวอย่างเหล่านี้ใช้ขอบเขต GCM ซึ่งมีประโยชน์เพื่อวัตถุประสงค์ในการสาธิตเท่านั้น เนื่องจากGoogle Cloud Messaging หยุดให้บริการแล้ว
ตั้งค่าบริการ Google Play
หากต้องการเขียนแอปพลิเคชันไคลเอ็นต์ ให้ใช้ SDK บริการ Google Play ตามที่อธิบายไว้ในตั้งค่า SDK บริการ Google Play ไลบรารีบริการ Play มีไลบรารี Instance ID รวมอยู่ด้วย
รับรหัสอินสแตนซ์
บรรทัดโค้ดต่อไปนี้จะแสดงผลรหัสอินสแตนซ์
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();
โทเค็นการรีเฟรช
บริการ Instance ID จะเริ่มต้นการเรียกกลับเป็นระยะ (เช่น ทุก 6 เดือน) เพื่อขอให้แอปรีเฟรชโทเค็น นอกจากนี้ ยังอาจเริ่มการโทรกลับในกรณีต่อไปนี้
- มีปัญหาด้านความปลอดภัย เช่น ปัญหา SSL หรือปัญหาแพลตฟอร์ม
- ข้อมูลอุปกรณ์ไม่ถูกต้องอีกต่อไป เช่น การสำรองและกู้คืนข้อมูล
- มิเช่นนั้นบริการรหัสอินสแตนซ์จะได้รับผลกระทบ
ใช้บริการตัวรับฟังรหัสอินสแตนซ์ในแอปเพื่อรับการเรียกกลับเหล่านี้
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>