UILocalNotification
我遇到了一些非常恼人的问题。
在完成我几乎已经完成的应用程序时,我注意到无论我尝试了什么,我都无法获得本地通知。
因此,我没有浪费时间,而是决定回到基础,看看我是否可以让它们工作。
我创建了一个新的基于XCode视图的应用程序,并将-viewDidLoad
替换为:
- (void)viewDidLoad
{
UILocalNotification * theNotification = [[UILocalNotification alloc] init];
theNotification.alertBody = @"Alert text";
theNotification.alertAction = @"Ok";
theNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:10];
[[UIApplication sharedApplication] scheduleLocalNotification:theNotification];
}
然而,这根本没有做任何事情 我希望在启动应用程序10秒后看到通知,但没有任何内容出现 另外,我在iPhone和模拟器上测试了这个。
我错过了一些非常关键的东西吗? (我在Apple文档中搜索过,无法找到发生这种情况的原因)
由于
答案 0 :(得分:43)
UILocalNotification
才会自动显示。如果应用程序正在运行并且本地通知将被触发,则会调用UIApplicationDelegate
的{{1}}方法,系统不会显示任何内容(也不会播放声音)。如果要显示通知,请在委托方法中自己创建- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
。
答案 1 :(得分:16)
只是我个人冒险中的愚蠢评论...
我有同样的问题,但我的问题是我忘记为alertBody分配一个值。如果您未设置alertBody,则不会显示通知。
答案 2 :(得分:12)
还有一件事,不要忘记显示是否允许推送查询,将以下代码添加到AppDelegate:
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) {
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories:nil];
[application registerUserNotificationSettings:settings];
}
}