0

我正在根據文檔整合Firebase的推送通知我已將google-services.json放入我的項目中,我的gradle如下。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' 
    } 
} 

項目級別搖籃

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

它完全錯誤的! ! 您只能在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