การใช้งาน Android

ตัวอย่างต่อไปนี้จะช่วยคุณในการติดตั้งใช้งานรหัสอินสแตนซ์ในไคลเอ็นต์ 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();

โทเค็นการรีเฟรช

บริการรหัสอินสแตนซ์จะเริ่มโค้ดเรียกกลับเป็นระยะ (เช่น ทุก 6 เดือน) เพื่อขอให้แอปรีเฟรชโทเค็น และอาจเริ่มการเรียกกลับเมื่อ

  • มีปัญหาด้านความปลอดภัย เช่น ปัญหา SSL หรือแพลตฟอร์ม
  • ข้อมูลอุปกรณ์จะใช้ไม่ได้อีกต่อไป เช่น การสำรองและกู้คืนข้อมูล
  • มิฉะนั้น บริการรหัสอินสแตนซ์จะได้รับผลกระทบ

ใช้บริการ Listener รหัสอินสแตนซ์ในแอปเพื่อรับโค้ดเรียกกลับเหล่านี้

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>