0

我已經繼承了一個使用推送通知的Xamarin Android項目。該項目使用Google客戶端消息傳遞包,我正在轉換爲Firebase消息傳遞包。但是我注意到FireBaseMessaging沒有.register方法。我是否還需要在Firebase控制檯中註冊發件人ID,如果是這樣?從GooglePlayService GCM轉換爲Xamarin.Android中的FireBaseMessaging沒有註冊

舊代碼:

private void registerInBackground() 
    { 

     Task.Run(() => 
      { 
       string msg = ""; 
       try 
       { 
        if (gcm == null) 
        { 
         gcm = GoogleCloudMessaging.GetInstance(this); 
        } 
        regid = gcm.Register(Constants.SenderID); 
        msg = "Device registered, registration ID=" + regid; 
        Log.Info(TAG, msg); 


        // can use GCM/HTTP or CCS to send messages to your app. 
        sendRegistrationIdToBackend(regid); 


        // Persist the regID - no need to register again. 
        storeRegistrationId(this, regid); 
       } 
       catch (System.Exception ex) 
       { 
        msg = "Error :" + ex.Message; 

        Log.Error(TAG, msg); 
       } 
       finally 
       { 
        //RunOnUiThread(() => mDisplay.Append(msg + "\n")); 
       } 
       return msg; 
      }); 
    } 

當我改變到FireBaseMessaging我注意到,上線REGID = gcm.Register(Constants.SenderID); Firebase消息中沒有註冊方法。任何幫助將不勝感激。

回答

1

您不需要調用註冊方法就會自動註冊。你只需要按照此步驟:

  1. 加入谷歌,services.json到Android項目,並確保設置該文件作爲GoogleServicesJson的生成操作。

  2. 添加在AndroidManifest.xml以下下的應用程序標籤:

    <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" /> 
    <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="${applicationId}" /> 
    </intent-filter> 
    </receiver> 
    
  3. 實施FirebaseInstanceIdService

    [Service, IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })] 
    public class MyFirebaseInstanceIdService : FirebaseInstanceIdService 
    { 
        public override void OnTokenRefresh() 
        { 
    
        var token = FirebaseInstanceId.Instance.Token; 
        //send token to server here. 
        } 
    } 
    
+0

我需要調用FireBaseInstanceID類在所有或者這是一個回調? – yams

+1

難道它不會調用它會被Android自動調用 –

+0

正如你所看到的是一個帶IntentFilter的服務,所以一旦令牌準備就會被調用。 –