当我在docs中找到这个时,我打算使用iOS 8的新远程通知API:
“建议您在安排之前调用此方法 本地通知或注册推送通知服务“
我无法理解为什么这么说。我的印象是两个方法调用:
registerUserNotificationSettings
和
registerForRemoteNotifications
现在是独立的,一个不影响其他。那为什么建议先调用一个呢?
答案 0 :(得分:0)
您可以在Apple文档中找到:
如果您希望应用的远程通知显示警报,播放声音或执行其他面向用户的操作,则必须调用registerUserNotificationSettings:方法来请求您要使用的通知类型。如果您不调用该方法,系统会以静默方式向您的应用程序发送所有远程通知。
答案 1 :(得分:-1)
IOS 8,对于获取设备令牌和注册远程通知,我们需要应用不同的进程。
if (IS_OS_8_OR_LATER) {
//Right, that is the point
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIRemoteNotificationTypeBadge
|UIRemoteNotificationTypeSound
|UIRemoteNotificationTypeAlert) categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
}else{
// Register for push notifications
[application registerForRemoteNotificationTypes:
UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeAlert |
UIRemoteNotificationTypeSound];
}
///////////我们需要再次定义
#ifdef __IPHONE_8_0
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
{
//register to receive notifications
[application registerForRemoteNotifications];
}
- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler
{
//handle the actions
if ([identifier isEqualToString:@"declineAction"]){
}
else if ([identifier isEqualToString:@"answerAction"]){
}
}
然后我们可以在ios 8中获取设备令牌