1

Ich arbeite an einer Xamarin App, wo ich Benachrichtigungen implementieren muss. Wir haben uns entschieden, azurblau zu verwenden, um sie zu verwalten, aber der, der die Benachrichtigung sendet, ist Firebase, so dass die Geräte im NotificationHub und im Firebase-Dienst registriert werden müssen.Firebase Cloud Messaging und Azure Notification Hubs Geräte-Registrierung gegenseitige Implementierung

ich succeded bereits dies am Telefon direkt tun, WindowsAzure.Messaging Komponente und Xamarin mit - Feuerbasis Messaging nuget.

Aber ich habe irgendwo gelesen, dass es empfohlen wird, dies aus dem App-Backend zu tun, also versuche ich es jetzt so zu implementieren.

Also mein neues „Back-End“ (Wich ist eigentlich ein Wcf-Dienst) wurde auf dieser guide (vereinfachte Version meiner ws) basiert:

public async Task<string> RegistrerCampusHubs(Device device) 
{ 
    RegistrationDescription registration = null; 
    string newRegistrationId = device.Id; 

    try 
    { 
     if (device.Regitration.Handle != null) 
     { 
      var registrations = await hub.GetRegistrationsByChannelAsync(device.Regitration.Handle, 100); 

      foreach (RegistrationDescription reg in registrations) 
      { 
       if (newRegistrationId == null) 
       { 
        newRegistrationId = reg.RegistrationId; 
       } 
       else 
       { 
        await hub.DeleteRegistrationAsync(reg); 
       } 
      } 
     } 

     if (newRegistrationId == null) 
     { 
      newRegistrationId = await hub.CreateRegistrationIdAsync(); 
     } 

     switch (device.Regitration.Platform) 
     { 
      case "mpns": 
       registration = new MpnsRegistrationDescription(device.Regitration.Handle); 
       break; 
      case "wns": 
       registration = new WindowsRegistrationDescription(device.Regitration.Handle); 
       break; 
      case "apns": 
       registration = new AppleRegistrationDescription(device.Regitration.Handle); 
       break; 
      case "gcm": 
       registration = new GcmRegistrationDescription(device.Regitration.Handle); 
       break; 
     } 

     registration.RegistrationId = newRegistrationId; 
     registration.Tags = new HashSet<string>(device.Regitration.Tags); 

     await hub.CreateOrUpdateRegistrationAsync(registration); 

     return "Success"; 
    } 
    catch (Exception e) 
    { 
     return "Failed: " + e.Message; 
    } 
} 

und dies scheint zu arbeiten, wie ich das sehen kann registrierten Geräte auf der Benachrichtigung Hub, aber wenn ich versuche, eine Nachricht zu senden ich folgende Fehlermeldung von der Anmeldepflicht Hub Test Sender in Visual Studio erhalten:

die Push Notification System Handle für die Registrierung ist nicht mehr gültig

Ich habe einige Tests durchgeführt und ich kam zu dem Schluss, dass das Problem darin besteht, dass das Gerät nicht im Firebase registriert wird.

await hub.CreateOrUpdateRegistrationAsync(registration); 

Diese Codezeile registriert das Gerät im NotificationHub, aber nicht im Firebase. Irgendwelche Ideen, wie man dieses Problem beheben kann?

Antwort

2

Gemäß Ihrer Beschreibung habe ich das Codebeispiel tutorial für die Verwendung von NotificationHub.Register und Enable Firebase Cloud Messaging verfolgt, um dieses Problem zu überprüfen. Ich könnte die Benachrichtigung erhalten, indem Sie den Test senden über Visual Studio Server Explorer und Test senden von Azure Portal.

Die Push Notification System Handle für die Registrierung kein

Basierend auf Ihrem Szenario mehr gültig ist, ging ich davon aus, dass Ihre Anmeldungen auf Azure Mitteilung Hub ungültig sein kann (z abgelaufen). Wir empfehlen Ihnen, sich bei jedem Start Ihrer App neu zu registrieren. Darüber hinaus können Sie auf tutorial für die Fehlerbehebung mit Azure Notification Hubs verweisen. Für den Service Bus Explorer können Sie sich auf here beziehen.

+0

Ja, ich habe es geschafft, dass dies irgendwann früher funktioniert, aber ist Gcm nicht veraltet? –

+0

Sie können [Push-Benachrichtigungen an Xamarin.Android App] (https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-xamarin-android-get-started- Push) mit dem Azure Mobile App-Backend. –

+0

Gerät Registrierung funktionierte nicht für mich. Probieren Sie das Gerät zur Installation im Backend aus. Hier habe ich meine Lösung gepostet und nach 3 Wochen herausgefunden, dass mein Code gut ist, nur habe ich falsch getestet. Sie können keine Benachrichtigung an sich selbst senden.Hilfe hilft. https://stackoverflow.com/questions/46778371/azure-app-service-not-delivers-push-notification – Wasyster

Verwandte Themen