本地通知不会出现 - 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的主要内容,如果未能解决你的问题,请参考以下文章