0

Ich habe versucht, Push-Benachrichtigungen in meine Formularanwendung zu integrieren. Azure Messaging-Komponente wird verwendet, um dies zu erreichen. Unten ist der Code, den ich verwende. Ich bekomme den Auslöser zu RegisteredForRemoteNotifications Methode. Aber RegisterNativeAsync Methode scheint nicht den Job zu machen.Abonnieren von Azure Push-Benachrichtigungsdienst in Xamarin-Formularen

public override bool FinishedLaunching (UIApplication app, NSDictionary options) 
{ 
if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0)) 
{ 
var push = UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, 
new NSSet()); 
UIApplication.SharedApplication.RegisterUserNotificationSettings(push); 
UIApplication.SharedApplication.RegisterForRemoteNotifications(); 
} 
else 
{ 
const UIRemoteNotificationType not = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound; 
UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(not); 
} 
} 

public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken) 
{ 

     Hub = new SBNotificationHub(conStirng, NotifHubPath); 
     Hub.UnregisterAllAsync(deviceToken, (error) => 
     { 
      //Get device token 
      var id = deviceToken.ToString(); 
      var tag = "username"; 
      var tags = new List<string> { tag }; 
      Hub.RegisterNativeAsync(id, new NSSet(tags.ToArray()), (errorCallback) => 
      { 
       if (errorCallback != null) 
       { 
        //Log to output 
       } 
      }); 
     }); 
    } 

Was mache ich hier falsch? Wie kann ich bestätigen, ob die Funktion Registrieren erfolgreich oder fehlgeschlagen ist?

Antwort

0

Sie müssen überprüfen, ob der Fehler von der Antwort der Registermethode null ist oder nicht. Wenn es null ist, bedeutet das, dass es ein Erfolg ist.

var hub = new SBNotificationHub (cs, "your-hub-name"); 
    hub.RegisterNativeAsync (deviceToken, null, err => { 
     if (err != null) 
      Console.WriteLine("Error: " + err.Description); 
     else 
      Console.WriteLine("Success"); 
    }); 

Bei Windows Universal Apps können wir die Eigenschaft registrationId der Antwort überprüfen.

private async void InitNotificationsAsync() 
{ 
    var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync(); 

    var hub = new NotificationHub("<hub name>", "<connection string with listen access>"); 
    var result = await hub.RegisterNativeAsync(channel.Uri); 

    // Displays the registration ID so you know it was successful 
    if (result.RegistrationId != null) 
    { 
     var dialog = new MessageDialog("Registration successful: " + result.RegistrationId); 
     dialog.Commands.Add(new UICommand("OK")); 
     await dialog.ShowAsync(); 
    } 

} 
+0

Null ist Erfolg? – TutuGeorge

+0

bedeutet dies, dass kein Fehler aufgetreten ist. daher Erfolg. – Aravind