android – FirebaseInstanceIdService getToken返回null

android – FirebaseInstanceIdService getToken返回null,第1张

概述我试图将FCM通知添加到我的应用程序,但由于某种原因 FirebaseInstanceId.getInstance().getToken(); 返回null. 由于我没有得到任何堆栈跟踪,我最好的猜测是FirebaseInstanceIdService不起作用 > Google Play服务版:9.6.1 > Firebase消息传递版本:9.6.1 >从FirebaseConsole添加了jso 我试图将FCM通知添加到我的应用程序,但由于某种原因

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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1122549.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存