Ich aktualisiere meine iOS-Anwendung, um mit iOS8 zu arbeiten, bekomme aber Probleme beim Abrufen des Geräte-Tokens für Remote-Benachrichtigungen.MonoTouch Get DeviceToken in iOS8
ich meine AppDelegate aktualisiert RegisterUserNotificationSettings
rufen zu registrieren, wenn iOS8 verwenden, frühere Versionen verlassen nennen RegisterForRemoteNotificationTypes
:
var version8 = new Version (8,0);
if (new Version(UIDevice.CurrentDevice.SystemVersion) < version8)
{
var notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound;
UIApplication.SharedApplication.RegisterForRemoteNotificationTypes (notificationTypes);
}
else
{
var settings = UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, new NSSet());
UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
}
Ich habe auch die folgenden Methoden in meiner AppDelegate Klasse:
public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
{
NSString str = (NSString)Runtime.GetNSObject(Messaging.intptr_objc_msgSend(deviceToken.Handle, new Selector("description").Handle));
_deviceTokenString = str.ToString().Replace("<", "").Replace(">", "").Replace(" ", "");
Trace.trace("Device Token: " + _deviceTokenString);
}
und
public override void DidRegisterUserNotificationSettings(UIApplication application, UIUserNotificationSettings notificationSettings)
{
// Get Device Token
}
Allerdings nicht wissen, wie man das Gerät Token in
Ich habe gelesen, dass in objective-c gibt es: didRegisterForRemoteNotificationsWithDeviceToken
aber das scheint nicht in Xamarin verfügbar sein (oder zumindest ich weiß nicht, wie man es nennt) .
Es scheint, dass Objective-C-Benutzer lieber 'RegisterForRemotNotifications' in' DidRegisterUserNotificationSettings' aufrufen (siehe http://stackoverflow.com/a/24488651/1644813). Ich bin mir nicht sicher, welches Threading-Modell hinter den Kulissen verwendet wird, aber für den Fall, dass 'RegisterForRemotNotifications' nicht synchron mit' DidRegisterUserNotificationSettings' abschließt, wäre dies eine sicherere Wette. –