0

Ich habe ein Xamarin Android-Projekt geerbt, das Push-Benachrichtigungen verwendet. Das Projekt verwendete das Google Client Messaging-Paket. Ich bin dabei, das Firebase Messaging-Paket zu konvertieren. Aber mir ist aufgefallen, dass es keine .register-Methode für FireBaseMessaging gibt. Muss ich mich noch mit der Absender-ID von der Firebase-Konsole anmelden und wenn ja, wie?Konvertieren von GooglePlayService GCM zu FireBaseMessaging in Xamarin.Android keine Registrierung

Alter Code:

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; 
      }); 
    } 

Als ich FireBaseMessaging ändern merke ich, dass auf der Linie regid = gcm.Register (Constants.SenderID); Es gibt keine Registrierungsmethode für Firebase Messaging. Jede Hilfe würde sehr geschätzt werden.

Antwort

1

Sie müssen keine Registermethode aufrufen, die automatisch registriert wird. Sie müssen nur diese Schritte folgen:

  1. hinzufügen google-services.json zum Android-Projekt und stellen Sie sicher, dass die Build-Aktion der Datei als GoogleServicesJson einzustellen.

  2. Fügen Sie den folgenden in AndroidManifest.xml unter Anwendung tag:

    <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 Implement

    [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

Muss ich die FireBaseInstanceID Klasse überhaupt nennen, oder ist dies ein Rückruf ? – yams

+1

Ruf es nicht an, es wird automatisch von Android –

+0

aufgerufen Wie Sie sehen können, ist ein Service mit einem IntentFilter, also sobald Token bereit ist, wird aufgerufen. –

Verwandte Themen