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.frameworkimport UserNotifications 一起使用。

【讨论】:

即使它已被弃用,那旧设备不应该支持向后兼容吗? 我个人不这么认为,但这可能是我的看法。开发人员负责及时更新应用程序,然后再进行重大更改等。

以上是关于UILocalNotification 在 iOS11 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

iOS 10 上的 UILocalNotification 会崩溃吗

iOS8 - UILocalNotification,稍后从代码中检查权限

iOS的本地推送UILocalNotification的使用

UILocalNotification 不会在 ios9 设备上触发(横幅未显示)

iOS:使用多个相同的视图控制器处理多个 uilocalnotification

如何在操作系统早于 iOS 4 的设备上忽略 UILocalNotification?