0

Ich verwende mvvmCross 5.3 und Xamarin 6.3 und benötige Hilfe, um auf die Daten zuzugreifen, die von der Benachrichtigung übergeben wurden.Zugriff auf Parameter in der Push-Benachrichtigung

Wenn ich eine Benachrichtigung bekomme, bekomme ich einen Standard-Jason, der von Apple gesendet wird und einen weiteren Parameter, den ich verwenden werde, um auf einen Bildschirm in meiner Anwendung zu zeigen.

in meinem AppDelegate Ich habe den folgenden Code:

public override bool FinishedLaunching(UIApplication application, NSDictionary options) 
     { 
      Window = new UIWindow(UIScreen.MainScreen.Bounds); 

      var setup = new Setup(this, Window); 
      setup.Initialize(); 

      var startup = Mvx.Resolve<IMvxAppStart>(); 
      startup.Start(); 

      Window.MakeKeyAndVisible(); 

      //Push Notifications 
      if (UIDevice.CurrentDevice.CheckSystemVersion(9, 0)) 
      { 
       var pushSettings = UIUserNotificationSettings.GetSettingsForTypes(
            UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, 
            new NSSet()); 

       UIApplication.SharedApplication.RegisterUserNotificationSettings(pushSettings); 
       UIApplication.SharedApplication.RegisterForRemoteNotifications(); 
      } 
      else 
      { 
       UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound; 
       UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(notificationTypes); 
      } 

      return ApplicationDelegate.SharedInstance.FinishedLaunching(application, options); 
     } 

In den Parametereinstellmöglichkeiten Ich weiß, dass ich die Informationen, die ich brauche, aber ich weiß nicht, wie diese Informationen in meinem Code zuzugreifen.

---- bearbeiten

2017-10-26 11:39:28.680 App.IOs[6733:2676232] 
{ 
    UIApplicationLaunchOptionsRemoteNotificationKey =  
    { 
     aps =   
     { 
      alert =    
      { 
       body = "Message"; 
       title = "Title"; 
      }; 
     }; 
     idOrder = 254; 
    }; 
} 
+0

Wenn ich richtig verstanden habe, können Sie die Daten in AppDelegate durch Überschreiben von 'ReceivedRemoteNotification' behandeln? –

+0

@ColeXia Ich weiß nicht, ob das ist, was ich brauche. Was ich bekomme, ist, was ich gerade in meine Frage eingefügt habe, und ich möchte die IdOrder bekommen und sie in meiner Bewerbung ansprechen. Wie und wo man diese Informationen bekommt, weiß ich nicht. –

+0

Haben Sie die oben angegebene Methode ausprobiert? –

Antwort

0

Sie eine Methode wie diese erstellen und es in den iOS-Methoden aufrufen, die die Meldungen in AppDelegate erhalten:

private void HandleReceivedNotification(NSDictionary userInfo = null) 
{ 

    if (userInfo != null) 
    { 
     var apsDictionary = userInfo["aps"] as NSDictionary; 
     var alertDictionary = apsDictionary["alert"] as NSDictionary; 
     var body = alertDictionary["body"].ToString(); 
     var idOrder = userInfo["idOrder "].ToString(); 
    } 
} 

Aber nicht Vergessen Sie nicht, einen try/catch einzufügen und prüfen Sie, ob eine Variable null ist.

Verwandte Themen