UILocalNotification 在 iOS11 中不起作用
Posted
技术标签:
【中文标题】UILocalNotification 在 iOS11 中不起作用【英文标题】:UILocalNotification not work in iOS11 【发布时间】:2018-01-12 10:32:35 【问题描述】:我有一个在 ios11 之前运行良好并在 AppStore 上发布的应用程序。如果用户在 iOS11 之前使用我的应用程序并升级到 iOS11,我的应用程序仍然可以正常工作。但是,如果它们最初是在 iOS11 上,然后重新安装我的 App,则 UILocalNotification 不起作用。每日警报未触发。我在我的实现中使用了 UILocalNotification,我知道它在 iOS10 中已经被弃用了。我检查了通知中心,在首选项窗格中看不到我的应用程序。有什么线索可以解决这个问题,或者我需要使用其他框架重写所有相关代码?
-(void)scheduleNotification
LOGDEBUG(NSLog(@"schedule notification"));
if (alertDate==nil)
alertDate=self.as.alertTime;
LOGDEBUG(NSLog(@"alert Date insider notification: %@", alertDate));
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.fireDate = alertDate;
notification.timeZone = [NSTimeZone defaultTimeZone];
notification.alertBody = "AlertBody here...";
notification.alertAction = "AlertAction...";
notification.soundName = UILocalNotificationDefaultSoundName;
notification.applicationIconBadgeNumber += 1;
notification.repeatInterval = NSDayCalendarUnit;
LOGDEBUG(NSLog(@"To be alert at: %@", alertDate));
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
我的 AppDelegate 中也有这些代码:
UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
LOGDEBUG(NSLog(@"%@", notification));
if (notification)
UIAlertView *view = [[UIAlertView alloc] initWithTitle:APP_NAME message:notification.alertBody delegate:self cancelButtonTitle:notification.alertAction otherButtonTitles: nil];
[view show];
application.applicationIconBadgeNumber = 0;
并且也已经实现了方法:
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
【问题讨论】:
【参考方案1】:至于Apple developer documentation,UILocalNotification
在 iOS 10 中已弃用。您可能希望将UserNotications.framework
与import UserNotifications
一起使用。
【讨论】:
即使它已被弃用,那旧设备不应该支持向后兼容吗? 我个人不这么认为,但这可能是我的看法。开发人员负责及时更新应用程序,然后再进行重大更改等。以上是关于UILocalNotification 在 iOS11 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
iOS 10 上的 UILocalNotification 会崩溃吗
iOS8 - UILocalNotification,稍后从代码中检查权限
iOS的本地推送UILocalNotification的使用
UILocalNotification 不会在 ios9 设备上触发(横幅未显示)