在 iOS 8 中注册推送通知时如何访问 deviceToken?
Posted
技术标签:
【中文标题】在 iOS 8 中注册推送通知时如何访问 deviceToken?【英文标题】:How to access deviceToken when registering for push notifications in iOS 8? 【发布时间】:2014-11-10 14:26:59 【问题描述】:我应该先说我已经检查过this 和this,但这两个公认的答案都没有解决我的问题。
我正在使用第三方推送通知服务,他们的registerDevice
方法需要deviceToken
,例如application:didRegisterForRemoteNotificationsWithDeviceToken:
返回的那个。但是,在 ios 8 中,该方法已被弃用,取而代之的是 application:didRegisterUserNotificationSettings:
,正如您所见,它没有 deviceToken
。
我已经尝试添加这个方法,它被调用,我希望会触发对didRegisterForRemoteNotifications
的手动调用,但它没有奏效。我用这个:
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
[application registerForRemoteNotifications];
基本上,我需要访问 deviceToken
,而我无法使用新首选的 application:didRegisterUserNotificationSettings
回调来访问。
在 iOS 7 中一切正常,但在 iOS 8 中,该令牌似乎不可用。我该如何解决这个问题?
【问题讨论】:
您需要设备令牌做什么? 我使用的第三方服务需要它,用于细分、按用户标记等。是的,我已经向他们征求意见,但我不想等他们回邮件和 SO 通常更快;) 【参考方案1】:我认为你误会了。 registerForRemoteNotifications
的回调是 didRegisterForRemoteNotificationsWithDeviceToken
,在 ios8 中根本不推荐使用。我刚刚测试过这个工作正常。
在您的应用委托中,对于 ios8,您可以这样做
UIUserNotificationType userNotificationTypes = (UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound);
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:userNotificationTypes
categories:nil];
[application registerUserNotificationSettings:settings];
[application registerForRemoteNotifications];
你得到的回调是
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken NS_AVAILABLE_IOS(3_0);
【讨论】:
我没有看到回调。我刚刚注意到didFailToRegisterForRemoteNotifications
中有一个错误,所以我现在正在查看。这可能是根本原因。
请告诉我们结局如何
看起来这是配置问题。哎呀!
还在纠结!以上是关于在 iOS 8 中注册推送通知时如何访问 deviceToken?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 的 Azure 移动应用通知中心注册目标推送通知
iOS 8 和 Cordova:应用程序在首次启动时立即请求推送通知权限