本地通知不会出现 - iOS

Posted

技术标签:

【中文标题】本地通知不会出现 - iOS【英文标题】:Local Notifications Wont Appear - iOS 【发布时间】:2014-10-07 01:09:27 【问题描述】:

当应用处于后台时,应用应向用户发送本地通知...

我遵循了所有的教程,我完全按照教程所说的做,编写代码或警告后我没有任何错误 但是尝试后本地通知仍然不会出现一切。

我正在使用 xcode 6,在测试设备上运行 ios8 我什至尝试在模拟器上运行,但仍然没有。请帮忙。我已经尝试了至少 5 种不同的方法来让本地通知正常工作,但仍然没有,但我没有错误...我应该添加什么或我不做什么?

为了测试这不起作用的故障不是我的,我有: -尝试重启xcode -尝试重新启动我的设备和模拟器 - 尝试在新项目中使用代码 - 尝试重新启动我的 mac 但是通知仍然不会出现...我感觉可能是 ios8 问题或 xcode6 问题

这是 AppDelegate.m 中的代码

- (void)applicationDidEnterBackground:(UIApplication *)application 

UILocalNotification *localNotification = [[UILocalNotification alloc] init];
[localNotification setFireDate: [NSDate dateWithTimeIntervalSinceNow:15]];
[localNotification setAlertBody:@"this is a test notification"];
[localNotification setTimeZone:[NSTimeZone defaultTimeZone]];
[[UIApplication sharedApplication]scheduleLocalNotification:localNotification];

【问题讨论】:

尝试使用 presentLocalNotificationNow 看看它是否出现。我猜你有某种时区问题。 defaultTimeZone 可能落后或领先于您所在的实际时间? 我正在测试的设备上的时间与他在我的 Mac 上的时间相同并且使用相同的 TimeZone。我也尝试在模拟器上测试本地通知,但仍然没有... 你尝试过presentLocalNotificationNow吗? 我应该在我已有的代码中添加到哪里? 用它代替 scheduleLocalNotification: 【参考方案1】:

将此添加到您的应用委托中的 didFInishLaunchingWithOptions 方法中:

if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) 
    [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];

在 iOS 8 中,我不能 100% 确定,但可能需要在允许本地通知工作之前放置那段代码。

【讨论】:

转到您的设备/模拟器上的设置,找到您的应用并点击它。应该有一个通知标签。那些关了吗? 我也试过了……我正在运行的应用程序没有出现在设置通知下。并且通知选项不会出现在settings-appname中的应用程序下方 为了补充米莉的答案,我会尝试完全删除 setTimeZone 看看会发生什么。我从来没有使用过时区。 我刚刚尝试过(删除setTimeZone)在我按下主页按钮将应用程序置于后台模式后仍然没有出现通知 哇。那很奇怪......这听起来可能很愚蠢,但这是我能想到的最后一件事。不要像 [localNotification setFireData: ...] 那样进行消息调用,而是尝试所有这些 localNotification.fireDate 等...【参考方案2】:

由于 iOS 8.0 中的通知发生了变化,所以在你的 AppDelegate didFinishLaunchingWithOptions 中添加这个:

if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)])

    // iOS 8 Notifications
    [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];

    [application registerForRemoteNotifications];

else

    //iOS Version < 8.0 Notifications
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
     (
      UIRemoteNotificationTypeBadge |
      UIRemoteNotificationTypeSound |
      UIRemoteNotificationTypeAlert)];

【讨论】:

以上是关于本地通知不会出现 - iOS的主要内容,如果未能解决你的问题,请参考以下文章

本地通知在 iOS 10.2 中没有出现在前台

iPhone iOS:本地通知未出现

iOS 7 本地通知默认没有声音

iOS 本地通知测试

如果在 iOS 设置中禁用通知访问时安排本地通知,则不会在 iOS 13 上触发本地通知

iOS 10 本地通知未显示