FirebaseCloudMessaging:FirebaseInstanceId 后台同步失败 - SERVICE_NOT_AVAILABLE

Posted

技术标签:

【中文标题】FirebaseCloudMessaging:FirebaseInstanceId 后台同步失败 - SERVICE_NOT_AVAILABLE【英文标题】:FirebaseCloudMessaging : FirebaseInstanceId background sync failed - SERVICE_NOT_AVAILABLE 【发布时间】:2016-11-29 17:05:26 【问题描述】:

我在 android 中使用 Firebase Cloud Messaging(FCM) API 进行推送通知。当我实现那个时候完美的工作,但现在它找不到google play的服务。

错误是:

FirebaseInstanceId:后台同步失败:SERVICE_NOT_AVAILABLE,

请帮我解决一下。我在 gradle 文件中使用了以下依赖项。

dependencies 
    compile files('libs/ksoap2-android-assembly-3.4.0-jar.jar')
    compile 'com.android.support:appcompat-v7:23.0.0'
    compile files('libs/gson-2.2.4.jar')
    compile files('libs/activation.jar')
    compile files('libs/mail.jar')
    compile files('libs/additionnal.jar')
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.facebook.android:facebook-android-sdk:4.14.0'
    compile 'com.google.firebase:firebase-messaging:9.0.2'

    compile('com.google.android.gms:play-services:9.0.2') 
        exclude group: "play-services-wallet"
        exclude module: "play-services-wallet"
        exclude group: "play-services-ads"
        exclude module: "play-services-ads"
    


感谢您花时间阅读本文。

【问题讨论】:

你的代码在哪里?您是否在 Firebase 服务器上正确配置了项目? 是的,我将我的项目从 google 控制台导入到 firebase 控制台,还生成了 json 文件并添加了我的项目。 哪一行代码出错?请发布您的 java 代码和 logcat。 在后台服务在 FCM 库中失败,所以我只收到此错误。 FirebaseInstanceId:后台同步失败:SERVICE_NOT_AVAILABLE, 您能否将您的 AndroidManifest 添加到问题中?此外,您使用 com.google.android.gms:play-services 可能会导致问题,因为您将同时使用 firebase-messaging 和 play-services-gcm。 FCM 和 GCM 不能在同一个项目中使用。 【参考方案1】:
    验证互联网连接 验证 Android SDK 工具(工具 -> Android -> SDK 管理器 -> SDK 工具选项卡)是否具有“Google Play 服务”最新版本,如果未安装该软件包。 然后如果你正在使用模拟器,请停止模拟器并重新启动它。它可以工作

【讨论】:

【参考方案2】:

您可以查看

    在没有代理的情况下检查您的互联网连接并打开互联网连接 用新的 google-service.json 替换你可以在 firebaseconsol 中得到它 请检查您的设备中是否有 google play 服务,它是否可以正常工作,如果没有 google play 服务,firebase 将无法工作

检查-FireBaseInstanceId service does not get registered

【讨论】:

【参考方案3】:

经过长时间的努力,我找到了答案,如果 google play 服务没有运行,那么FirebaseInstanceId background sync failed - SERVICE_NOT_AVAILABLE 日志打印,所以你可以检查你的 google play 服务是否正常运行?

也许这些信息对你有帮助!

【讨论】:

【参考方案4】:

服务需要绑定在Manifest.xml

    <!-- Firebase InstanceId Service -->
    <service
        android:name="eu.acme.service.FireBaseInstanceIdService"
        android:exported="false" >
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
        </intent-filter>
    </service>

然后可以访问一个公开的方法(其他名称被混淆 = 不可靠):

package eu.acme.service;

import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.FirebaseInstanceIdService;

public class FireBaseInstanceIdService extends FirebaseInstanceIdService 

    @Override
    @android.support.annotation.WorkerThread
    public void onTokenRefresh() 

        /* obtain the current InstanceId token: */
        String token = FirebaseInstanceId.getInstance().getToken();
    

一个人只能通过不激怒它来解决它,例如。通过在知道不存在活动网络的情况下不添加任何 AuthState 侦听器,正如 here 所解释的那样 - 看起来,否则无法捕获从库中抛出的异常 - 这可以忽略,因为它只是抱怨,没有网络连接。

com.google.android.gms.iid 和 com.google.firebase.iid 差不多。

【讨论】:

哪些因素会导致这种情况?我不确定究竟是什么原因造成的。我确实有网络,但仍然抛出此异常。我需要不断重启设备直到它正常工作。 ***.com/questions/51123197/…【参考方案5】:

我不得不禁用我的 *** - 希望这对某人有所帮助!

【讨论】:

【参考方案6】:

我刚遇到这个问题。就我而言,只有在我停止模拟器、关闭它并再次打开时才有效。我没有进行任何其他更改。

【讨论】:

【参考方案7】:

最简单的解决方法是删除.Droid目录下的bin和obj文件夹。 这样,您每次都有一个干净的开始。

【讨论】:

【参考方案8】:

在我的情况下 - 我重新启动了我的电脑并且它工作了。

我不是专家,所以我可能已经通过我的方法涵盖了提到的提示之一

【讨论】:

【参考方案9】:

连接您的手机与不同的 wifi 连接与不同的服务提供商。看起来很奇怪,但你可以试试!

【讨论】:

【参考方案10】:

就我而言,我只是从 Android Studio 偏好设置中删除了即时运行

【讨论】:

【参考方案11】:

我也有同样的问题,通过构建下的 Clean Project 选项解决。希望它可以帮助这里的任何人。

【讨论】:

【参考方案12】:

您需要更新您的播放服务并确保您的互联网连接良好。

【讨论】:

【参考方案13】:

就我而言

我已在项目根目录中添加了google-services.json 文件,我将其移至 app 文件夹,问题已得到解决。

MyProjectRootDir/google-services.json

move to --> 

MyProjectRootDir/app/google-services.json

【讨论】:

以上是关于FirebaseCloudMessaging:FirebaseInstanceId 后台同步失败 - SERVICE_NOT_AVAILABLE的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 云消息传递 - 如何验证令牌?

Firebase 云消息传递 - iOS - 未注册或无法订阅主题

Firebase 云消息传递 - PHP Rest API 不适用于 iOS

Firebase 云消息传递 - GCM 规范 ID 是不是仍然需要?

Firebase Cloud Messaging:Firebase Admin SDK 中的设备组发送支持

Firebase Cloud Messaging - 更改 Android 上 Web 通知的默认 Chrome 图标