2016-07-26 106 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文件夾。
這樣你每次都有一個乾淨的開始。