0

私はドキュメントに基づいてFirebaseのプッシュ通知を統合しています私は自分のプロジェクトにgoogle-services.jsonを入れました。私の活動のコードでFirebaseインスタンスIDがNULLを返します

トップレベルのGradle

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.2.0' 
     classpath 'com.google.gms:google-services:3.0.0' 
    } 
} 

プロジェクトレベルのGradle

compileSdkVersion 24 
    buildToolsVersion "24.0.2" 

    dependencies { 
     compile fileTree(include: ['*.jar'], dir: 'libs') 
     testCompile 'junit:junit:4.12' 
     compile project(':humanapi-sdk') 
     compile files('libs/Android_iwown_Ble.jar') 
     compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { 
      transitive = true; 
     } 

     compile 'com.android.support:support-compat:24.2.0' 
     compile 'net.danlew:android.joda:2.9.2' 
     compile 'com.android.support:multidex:1.0.1' 
     compile 'com.android.support:appcompat-v7:24.2.0' 
     compile 'com.android.support:design:24.2.0' 
     compile 'com.android.support:cardview-v7:24.2.0' 
     compile 'com.android.support:recyclerview-v7:24.2.0' 
     compile 'com.android.support:customtabs:24.2.0' 

     compile 'com.google.firebase:firebase-messaging:9.6.1' 


    } 

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

String token = FirebaseInstanceId.getInstance().getToken(); 
     Log.i(TAG,"Firebase token: "+token); 

返されたトークンは

+0

ここにマニフェストファイルを投稿してください。 – dhuma1981

+0

@ dhuma1981Iマニフェストパーミッションが混乱していました。 – Sutirth

答えて

0

そのは完全に間違って常にnullです! ! あなたはFirebaseInstanceIdServiceのIDだけを取得できます!

これは自動的に取り消され、手動では実行できません。

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { 

private static final String TAG = "MyFirebaseIIDService"; 

/** 
* Called if InstanceID token is updated. This may occur if the security of 
* the previous token had been compromised. Note that this is called when the InstanceID token 
* is initially generated so this is where you would retrieve the token. 
*/ 
@Override 
public void onTokenRefresh() { 
    // Get updated InstanceID token. 
    String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 
    Log.d(TAG, "Refreshed token: " + refreshedToken); 
} 
} 

マニフェストにもサービスを追加することを忘れないでください。

+0

サービスを追加しましたが、リフレッシュトークンは決して印刷されません。さらに、githubのfirbaseサンプルアプリケーションでも、メインアクティビティの呼び出しがあります。 – Sutirth

+0

私はマニフェストの許可を得て、 – Sutirth

-1

firebaseセットアップガイドのすべてをセットアップするとうまくいくが、時には動作しないことがある。トークンは生成されません。

「FCMの古い実装と生成されたマニフェストスルー掘り起こした後、私は今、マニフェスト合併が問題であると言うことができます。

アプリのマニフェストてmanualyにこれらのクラスを追加して、この問題のためのソリューション」

<activity 
    android:name="com.google.android.gms.common.api.GoogleApiActivity" 
    android:exported="false" 
    android:theme="@android:style/Theme.Translucent.NoTitleBar" /> 

<meta-data 
    android:name="com.google.android.gms.version" 
    android:value="@integer/google_play_services_version" /> 

<service 
    android:name="com.google.firebase.messaging.FirebaseMessagingService" 
    android:exported="true" > 
    <intent-filter android:priority="-500" > 
     <action android:name="com.google.firebase.MESSAGING_EVENT" /> 
    </intent-filter> 
</service> 

<receiver 
    android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" 
    android:exported="true" 
    android:permission="com.google.android.c2dm.permission.SEND" > 
    <intent-filter> 
     <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
     <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 

     <category android:name="com.fc.debug" /> 
    </intent-filter> 
</receiver> 


<receiver 
    android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" 
    android:exported="false" /> 
<!-- 

--> 
<service 
    android:name="com.google.firebase.iid.FirebaseInstanceIdService" 
    android:exported="true" > 
    <intent-filter android:priority="-500" > 
     <action android:name="com.google.firebase.INSTANCE_ID_EVENT" /> 
    </intent-filter> 
</service> 

<provider 
    android:name="com.google.firebase.provider.FirebaseInitProvider" 
    android:authorities="com.fc.debug.firebaseinitprovider" 
    android:exported="false" 
    android:initOrder="100" /> 

<receiver 
    android:name="com.google.android.gms.measurement.AppMeasurementReceiver" 
    android:enabled="true" > 
    <intent-filter> 
     <action android:name="com.google.android.gms.measurement.UPLOAD" /> 
    </intent-filter> 
</receiver> 

<service 
    android:name="com.google.android.gms.measurement.AppMeasurementService" 
    android:enabled="true" 
    android:exported="false" /> 

参考:https://stackoverflow.com/a/40009448/5740236

関連する問題