2016-07-26 43 views
3

我在Android中使用Firebase云消息传递(FCM)API进行推送通知。当我执行那个时间完美的工作,但现在它无法找到谷歌服务的服务。Android FirebaseCouldMessaging:FirebaseInstanceId后台同步失败 - SERVICE_NOT_AVAILABLE

的错误是:

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" 
    } 

} 

感谢您花时间阅读本文。

+0

你的代码在哪里?您是否已正确配置Firebase服务器上的项目? – Talha

+0

是的,我是从谷歌控制台导入我的项目到Firebase控制台,也生成json文件并添加我的项目。 –

+0

哪行代码给出错误?请发布您的java代码和logcat。 – Talha

回答

3

经过漫长的奋斗,我找到了答案,如果谷歌播放服务没有运行,然后FirebaseInstanceId background sync failed - SERVICE_NOT_AVAILABLE日志打印,所以你可以检查你的谷歌播放服务是否正常运行?

可能是这个信息对您有帮助!

1

服务需要在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 Listener,正如解释here所示 - 否则其他人无法捕获库内抛出的异常 - 这可以忽略,因为它仅仅是抱怨,没有网络连接。

com.google.android.gms.iidcom.google.firebase.iid大致相同。

2

您可以检查

  1. 请与无代理和开放的互联网您的互联网连接进行连接
  2. 更换新的google-service.json您可以在firebaseconsol得到这个
  3. 请检查您的设备有谷歌玩它的服务和它的工作与否,firebase不工作没有谷歌播放服务

检查 - FireBaseInstanceId service does not get registered

4
  1. 验证Internet连接
  2. 验证,如果Android SDK工具(工具 - > Android的 - > SDK管理器 - > SDK工具选项卡)已经“谷歌Play服务的最新版本,如果没有安装包。 然后,如果你正在使用模拟器,请停止模拟器并启动它again.It工作
0

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