การใช้งาน Android

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

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