การใช้งาน Android

ตัวอย่างต่อไปนี้จะช่วยคุณติดตั้งใช้งานรหัสอินสแตนซ์ในไคลเอ็นต์ Android โปรดทราบว่าตัวอย่างเหล่านี้ใช้ขอบเขต GCM ซึ่งมีประโยชน์เฉพาะ เพื่อวัตถุประสงค์ในการสาธิตเท่านั้น เนื่องจาก Google Cloud Messaging ได้ หยุดให้บริการแล้ว

ตั้งค่าบริการ 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);

นอกจากนี้ คุณยังลบ Instance ID เองได้ด้วย ซึ่งรวมถึงโทเค็นทั้งหมดที่เชื่อมโยงอยู่ ในครั้งถัดไปที่คุณโทรหา 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>