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 云消息传递 - iOS - 未注册或无法订阅主题
Firebase 云消息传递 - PHP Rest API 不适用于 iOS
Firebase 云消息传递 - GCM 规范 ID 是不是仍然需要?