是否存在任何已知问题:
application:didReceiveLocalNotification delegate
在iOS 8上?
我的应用程序使用UILocalNotification
创建本地通知。当应用程序在后台时我收到通知,当我点击通知横幅时,它会移动到我的应用程序。但是这个方法:
-(void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
永远不会在iOS 8(Xcode 5.1.1)上调用,但在iOS 7或更早版本上运行良好。
P.S。我还测试了这个站点的项目: http://www.appcoda.com/ios-programming-local-notification-tutorial/ 它在iOS 8上不起作用。
答案 0 :(得分:7)
实际上,iOS 8上的解决方案是向用户请求对通知设置的授权,否则将永远不会调用委托方法-didReceiveLocalNotification :.您可以通过将此代码添加到-didFinishLaunchingWithOptions:方法来执行此操作:
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
{
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings
settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge)
categories:nil]];
}
这将向用户显示一个警报视图,要求显示通知的权限。如果她接受,则只要发出本地通知,就会调用委托方法。
答案 1 :(得分:5)
将此用于iOS8
- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler:(void(^)())completionHandler{
}
答案 2 :(得分:4)
我遇到同样的问题......
您必须更改为使用以下代码:
// register notification for push mechanism
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings
settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge)
categories:nil]];
[[UIApplication sharedApplication] registerForRemoteNotifications];
} else {
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
}
而不是原来的:
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound];
答案 3 :(得分:1)
我在iOS8Beta5上也注意到了这一点。相同的代码在iOS8Beta4上运行良好。
编辑: 如果答案显示,我们需要以不同方式处理它 - 那么为什么它们会在两个beta版本之间放弃支持。如果iOS8Beta1构建表现如此,那将是有意义的。这就是为什么我觉得它是一个错误。