- この記事は、Instance IDに関する記事を和訳したものです。
- 原文: Android Implementation
- 元記事のライセンスは CC-BYで、この和訳記事のライセンスは CC-BYです。
- 自己責任でご利用ください。
- 和訳した時期は 2017年8月ころです。
次の例は、Androidクライアントにて Instance IDを実装するのに役立つでしょう。 これらの例では、GCMスコープを使用していることに注意してください、それは、Google Cloud Messaging用の Androidクライアントにてトークンを管理するために使用します。
Google Play Servicesをセットアップする
あなたのクライアントアプリケーションを書くには、Google Play services SDKを使用します、それは、Set up Google Play Services SDKを参照してください。 Play Services Libraryは、Instance IDライブラリを含んでいます。
Instance IDを取得する
次のコード行は、Instance IDを返します:
String iid = InstanceID.getInstance(context).getId();
トークンを生成する
トークンを生成するには、Google Developers Consoleによって生成された Project IDを必要とします。
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);
トークンおよび Instance IDを管理する
Instance IDは、あなたにトークンを削除およびリフレッシュさせます。
トークンおよび Instance IDを削除する
String authorizedEntity = PROJECT_ID;
String scope = "GCM";
InstanceID.getInstance(context).deleteToken(authorizedEntity,scope);
また、Instance ID自身を削除することもできます、それは、関連するすべてのトークンを含んでいます。
次に getInstance()
を呼び出したとき、新しい Instance IDを取得するでしょう。
InstanceID.getInstance(context).deleteInstanceID();
String newIID = InstanceID.getInstance(context).getId();
トークンをリフレッシュする
Instance IDサービスは、定期的にコールバックを開始します(例えば、6ヶ月ごとに)、それは、あなたのアプリがそのトークンをリフレッシュするすることをリクエストします。 また、次の場合に、コールバックを開始するかもしれません:
- セキュリティの問題がある; 例えば、SSLあるいはプラットフォームの問題。
- 端末情報がもはや有効ではない; 例えば、バックアップおよびリストア。
- Instance IDサービスが、それ以外に影響を受けた。
これらのコールバックを受け取るために、あなたのアプリにて Instance 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>