
FirebaseInstanceID.getInstance().getToken();
返回null.
由于我没有得到任何堆栈跟踪,我最好的猜测是FirebaseInstanceIDService不起作用
> Google Play服务版:9.6.1
> Firebase消息传递版本:9.6.1
>从FirebaseConsole添加了Json配置文件(在其中包含2个客户端的尝试单个文件,一个用于调试,一个用于发布版本)和两个文件用于各自的构建
我在我的模块gradle脚本底部应用了Google服务插件
在项目根gradle脚本中包含谷歌服务
从officail docs创建了2项服务:
public class MyFirebaseInsanceIDService extends FirebaseInstanceIDService {private static final String TAG = "MyFirebaseIIDService";@OverrIDepublic voID onTokenRefresh() { // Get updated InstanceID token. String refreshedToken = FirebaseInstanceID.getInstance().getToken(); PreferencesHelper.putSharedPreferencesstring(Constants.User.PUSH_NOTIFICATIONS,refreshedToken); Log.e("TOKEN","Token: " + FirebaseInstanceID.getInstance().getToken());} }
并且清单:
<manifest xmlns:androID="http://schemas.androID.com/apk/res/androID"xmlns:tools="http://schemas.androID.com/tools"package="com.fc.test"><uses-permission androID:name="androID.permission.disABLE_KEyguard" /><uses-permission androID:name="androID.permission.INTERNET" /><application androID:name="fctest" androID:allowBackup="true" androID:icon="@mipmap/ic_launcher" androID:label="${appname}${appnameSuffix}" androID:supportsRtl="true" androID:theme="@style/Apptheme" tools:node="replace"> <service androID:name="com.fc.test.MyFirebaseInsanceIDService" androID:enabled="true" androID:exported="true"> <intent-filter> <action androID:name="com.Google.firebase.INSTANCE_ID_EVENT" /> </intent-filter> </service> <service androID:name="com.fc.test.MyFirebaseMessagingService" androID:enabled="true" androID:exported="true"> <intent-filter> <action androID:name="com.Google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> <activity androID:name="com.fc.test.vIEw.splash.Splash" androID:screenorIEntation="portrait" androID:theme="@style/Apptheme.Centeranimation"> <intent-filter> <action androID:name="androID.intent.action.MAIN" /> <category androID:name="androID.intent.category.LAUNCHER" /> </intent-filter> </activity></application> root Gradle:
buildscript { repositorIEs { jcenter() maven { url 'https://maven.fabric.io/public' } } dependencIEs { classpath 'com.androID.tools.build:gradle:2.1.2' classpath 'com.neenbedankt.gradle.plugins:androID-apt:1.8' //noinspection GradleDynamicVersion classpath 'io.fabric.tools:gradle:1.+' classpath 'com.Google.gms:Google-services:3.0.0' }}allprojects { repositorIEs { jcenter() maven { url "http://dl.bintray.com/drummer-aIDan/maven" } maven { url "https://maven.fabric.io/public" } maven { url "https://oss.sonatype.org/content/repositorIEs/snapshots/" } maven { url "https://jitpack.io" } }}ext { buildToolsversion = '24.0.1' compileSdkVersion = 24 minSdkVersion = 15 targetSdkVersion = 24 supportlibraryVersion = '24.2.1'} 以及Gradle模块的主要部分
dependencIEs { final PLAY_SERVICES_VERSION = '9.6.1' final SUPPORT_liBRARY_VERSION = '24.2.1' final RETROFIT_VERSION = '2.1.0' final DAGGER_VERSION = '2.5' final DEXMAKER_VERSION = '1.4' final HAMCREST_VERSION = '1.3' final ESPRESSO_VERSION = '2.2.1' final RUNNER_VERSION = '0.4' final BUTTERKNIFE_VERSION = '8.1.0' def daggerCompiler = "com.Google.dagger:dagger-compiler:$DAGGER_VERSION" def jUnit = "junit:junit:4.12" def mockito = "org.mockito:mockito-core:1.10.19" // App DependencIEs compile "com.Google.androID.gms:play-services-gcm:$PLAY_SERVICES_VERSION" compile "com.Google.firebase:firebase-messaging:$PLAY_SERVICES_VERSION" compile "com.androID.support:appcompat-v7:$SUPPORT_liBRARY_VERSION" compile "com.androID.support:recyclervIEw-v7:$SUPPORT_liBRARY_VERSION" compile "com.androID.support:cardvIEw-v7:$SUPPORT_liBRARY_VERSION" compile "com.androID.support:design:$SUPPORT_liBRARY_VERSION" compile "com.androID.support:support-annotations:$SUPPORT_liBRARY_VERSION" compile "com.androID.support:support-v4:$SUPPORT_liBRARY_VERSION" compile "com.squareup.retrofit2:retrofit:$RETROFIT_VERSION" compile "com.squareup.retrofit2:converter-gson:$RETROFIT_VERSION" compile "com.squareup.retrofit2:adapter-rxjava:$RETROFIT_VERSION" compile "com.jakewharton:butterknife:$BUTTERKNIFE_VERSION" compile('com.crashlytics.sdk.androID:crashlytics:2.6.5@aar') { transitive = true; }}apply plugin: 'com.Google.gms.Google-services >请注意我在我的根应用程序标记中使用工具:node =“replace”.
FirebaseInstanceIDService是否可能未添加到清单中,因为它具有与FirebaseInstanceService相同的intent过滤器,因此不会被调用?
所以我的问题是,官方文档或我的实现中是否存在错误导致实例令牌为空?
解决方法 通过挖掘FCM的旧实现并生成清单之后,我现在可以说清单合并就是问题所在.解决此问题的方法是将这些类手动添加到应用程序清单中
<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" />总结
以上是内存溢出为你收集整理的android – FirebaseInstanceIdService getToken返回null全部内容,希望文章能够帮你解决android – FirebaseInstanceIdService getToken返回null所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)