2017-10-30 13 views
0

AndroidStudio-ツールのFCM設定 - クラウドメッセージングのFirebaseアシスタントが正常にセットアップされました。したがって、セットアップは訂正されますが、Tokenは生成されません。MainActivityのトークン表示を介してlogcatおよびConfigクラスには生成されず、その表示はnullです。実行の問題の後、アンインストールされたアプリが続行されます。私も別のエミュレータを試してみましたが、解決策はありません。Firebase Cloud Messagingトークンが生成されません。

MyFirebaseInstanceIDService.java

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { 

    private static final String TAG = "MyFirebaseIIDService"; 
    @Override 
    public void onTokenRefresh() { 

     String newToken = FirebaseInstanceId.getInstance().getToken(); 
     Log.d(TAG, "Refreshed token: " + newToken); 
     Config.TOKEN = newToken; 
    } 
} 

のAndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <service 
     android:name=".MyFirebaseInstanceIDService"> 
     <intent-filter> 
      <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> 
     </intent-filter> 
    </service> 

</application> 

build.gradle(プロジェクトレベル)

dependencies { 
     classpath 'com.android.tools.build:gradle:2.3.0' 

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
     classpath 'com.google.gms:google-services:3.0.0' 
    } 

build.gradle(アプリケーションレベル)

dependencies { 

    compile fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:26.+' 
    compile 'com.android.support.constraint:constraint-layout:1.0.2' 
    compile 'com.google.firebase:firebase-messaging:10.0.1' 
    testCompile 'junit:junit:4.12' 
    compile 'com.squareup.okhttp:okhttp:2.0.0' 
} 

apply plugin: 'com.google.gms.google-services' 
+0

をマニフェストにこれを追加...あなたはあなたのアプリケーションのディレクトリの下にファイルを – Shanmugam

+0

をgoogleservies.jsonしているのですか? – Raghunandan

+0

はい、アプリケーションディレクトリ – Pinkesh

答えて

0

メソッドonTokenRefresh()は、アプリケーションを実行するたびに呼び出されることはありません。新しいトークンが生成されたときにだけ呼び出されます。だから、めったに呼ばれない。

しかし、最初の実行では常に呼び出されます。したがって、メソッドonTokenRefresh()の内部では、リフレッシュされたトークンを共有プリファレンスに保存する必要があります。

firebaseトークンが必要な場合は、共有設定から取得する必要があります。これは常に利用可能です。

今のところ、アプリデータを消去するか、アプリをアンインストールして再インストールして新しいトークンを生成することで修正できます。

+0

のgoogleservies.jsonファイルは初めて生成されたトークンではありません。最初に生成された方法。私は共有プリファレンスを使用していますが、トークンはnullを表示します。 – Pinkesh

2

あなたがそれを必要とする場合にアプリ内の任意の時点で、あなたはFirebaseインスタンスIDトークンを取得するには、このコードを使用することができますが:

String token = FirebaseInstanceId.getInstance().getToken(); 

トークンの変更あなたのFirebaseInstanceIdServiceのみが実行されます。 The Firebase documentation状態:

インスタンスIDが時を除いて安定している:

  • アプリケーションは
  • アプリケーションは
  • ユーザーがアンインストールし、新しいデバイスに復元され
  • /アプリを再インストールしてインスタンスIDを削除
  • ユーザークリアアプリデータ

あなたのアプリにこれらのことが起こらない場合、あなたのFirebaseInstanceIdServiceは、あなたのアプリケーションがデバイスにインストールされたときに初めて実行されるときに実行されます。

0
<service android:name=".MyFirebaseMsgService"> 
      <intent-filter> 
       <action android:name="com.google.firebase.MESSAGING_EVENT" /> 
      </intent-filter> 
     </service> 

アプリをアンインストールしてからもう一度お試し

関連する問題