การใช้งาน Android

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

ตั้งค่าบริการ Google Play

หากต้องการเขียนแอปพลิเคชันไคลเอ็นต์ ให้ใช้ SDK บริการ Google Play ตามที่อธิบายไว้ในตั้งค่า Google Play SDK บริการ ไลบรารีบริการ 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 เดือน) โดยขอให้แอปของคุณรีเฟรชโทเค็น นอกจากนี้ยังอาจ เริ่มการติดต่อกลับเมื่อ

  • มีปัญหาด้านความปลอดภัย เช่น ปัญหา 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>