誰かが次のコードのgcm_defaultSenderIdが何であるかを理解するのを手伝ってもらえますか(RegistrationIntentService.JavaのonHandleIntentにあります):
InstanceID instanceID = InstanceID.getInstance(this);
String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
// [END get_token]
Log.i(TAG, "GCM Registration Token: " + token);
これは、GCMをアプリに実装するためのGoogleサンプルアプリのものであり、アプリ内でコンパイルすることさえしません!それは各アプリに固有の何かだと思います。私はすでにアプリケーションにGCM APIを追加していますが、この文字列が何であるかわからないだけです!ありがとう!
[〜#〜] this [〜#〜] を引用すると、その実装に関する詳細を見つけることができます:
_String authorizedEntity = PROJECT_ID; // Project id from Google Developers 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().getToken(authorizedEntity,scope);
_
ご覧のとおり、getToken()
に渡す最初のパラメーターはauthorizedEntity
で、これはGoogle DevelopersからのプロジェクトIDです:)
GitHubのプロジェクトにその文字列が含まれていたとしても、このauthorizedEntity
はアプリごとに一意であるため、役に立たないでしょう。
Gcm_defaultSenderIdは、google-services gradleプラグインに含まれる文字列です。あなたが持っていることを確認してください:
apply plugin: 'com.google.gms.google-services'
build.gradleファイル内。
このプラグインは、ビルドツールの最新バージョンで使用できる必要があります。
Veskoが言ったように、これはあなたのSender IDであり、この場合は開発コンソールプロジェクトのプロジェクト番号です。 google-servicesプラグインは、ダウンロードしたプロジェクト構成ファイルからこれを抽出します。
私はこれらのバグのあるGradleプラグインが嫌いです。また、複数のフレーバーを持つプロジェクトでgoogle-servicesプラグインを操作しようとするのも楽しいことではありません。
私は名前で送信者IDを取得することになりました:
InstanceID instanceID = InstanceID.getInstance(this);
String gcmDefaultSenderId = getString( getResources().getIdentifier("gcm_defaultSenderId", "string", this.getPackageName()) );
String token = instanceID.getToken( gcmDefaultSenderId, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
これを解決するには、apply plugin: 'com.google.gms.google-services'
をgradle.appモジュールに追加し、classpath 'com.google.gms:google-services:1.3.0'
をgradle.appプロジェクトの依存関係に追加するだけです。
そしてもちろん、compile 'com.google.Android.gms:play-services-gcm:8.1.0'
をgradleに追加することを忘れないでください
もう1つ重要なことは、google-services.jsonファイルを作成することです。
他の誰かがこの問題に出くわした場合に備えて。