Android 구현

다음 예는 Android 애플리케이션에서 인스턴스 ID를 구현하는 데 도움이 됩니다. 있습니다 이 예에서는 GCM 범위를 사용합니다. 이 범위는 . Google 클라우드 메시징은 더 이상 사용되지 않습니다.

Google Play 서비스 설정

클라이언트 애플리케이션을 작성하려면 Google Play 서비스 SDK를 사용하세요. Google Play 설정 서비스 SDK를 참고하세요. Play 서비스 라이브러리에는 인스턴스 ID 라이브러리가 포함되어 있습니다.

인스턴스 ID 가져오기

다음 코드 줄은 인스턴스 ID를 반환합니다.

String iid = InstanceID.getInstance(context).getId();

토큰 생성

토큰을 생성하려면 프로젝트 ID가 필요합니다. 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);

토큰 및 인스턴스 ID 관리

인스턴스 ID를 사용하면 토큰을 삭제하고 새로고침할 수 있습니다.

토큰 및 인스턴스 ID 삭제

String authorizedEntity = PROJECT_ID;
String scope = "GCM";
InstanceID.getInstance(context).deleteToken(authorizedEntity,scope);

또한 인스턴스에 연결된 모든 ID를 비롯하여 인스턴스 ID 자체를 토큰입니다. 다음에 getInstance()을(를) 호출하면 새로운 인스턴스 ID:

InstanceID.getInstance(context).deleteInstanceID();
String newIID = InstanceID.getInstance(context).getId();

갱신 토큰

인스턴스 ID 서비스는 주기적으로 콜백을 시작합니다 (예: 6개월마다)를 호출하여 앱에 토큰을 새로고침하도록 요청합니다. 또한 다음과 같은 경우 콜백을 시작합니다.

  • 보안 문제가 있는 경우 SSL 또는 플랫폼 문제를 예로 들 수 있습니다
  • 기기 정보가 더 이상 유효하지 않습니다. 백업 및 복원을 예로 들 수 있습니다
  • 그 밖의 경우에는 인스턴스 ID 서비스가 영향을 받습니다.

앱에서 인스턴스 ID 리스너 서비스를 구현하여 있습니다.

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
    }
  }
};

프로젝트의 매니페스트 파일에서도 이 서비스를 구성해야 합니다.

<service android:name=".MyInstanceIDService" android:exported="false">
  <intent-filter>
        <action android:name="com.google.android.gms.iid.InstanceID"/>
  </intent-filter>
</service>