Iphone presentLocalNotificationNow 在后台应用程序时不会触发警报和声音
Posted
技术标签:
【中文标题】Iphone presentLocalNotificationNow 在后台应用程序时不会触发警报和声音【英文标题】:Iphone presentLocalNotificationNow not triggering alert and sound while app in background 【发布时间】:2012-04-29 05:30:52 【问题描述】:我有一个应用程序注册位置更新、运行测试,有时当我在应用程序处于后台时进入某个区域时,我会收到带有声音的警报通知。有时我只在通知中心看到通知,并没有收到任何声音和警报... 怎样做才能始终收到声音和警报通知?
这就是我的看法
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
localNotif.fireDate = nil;
localNotif.hasAction = YES;
localNotif.alertBody = fbName;
localNotif.alertAction = @"View";
localNotif.soundName = UILocalNotificationDefaultSoundName;
[[UIApplication sharedApplication]presentLocalNotificationNow:localNotif];
这是应用委托
- (void)application:(UIApplication *)application didReceiveLocalNotification (UILocalNotification *)notification
if (notification)
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Alert"
message:notification.alertBody
delegate:self cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
facebook = [[Facebook alloc] initWithAppId:kAppId andDelegate:self];
UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (notification)
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Alert"
message:notification.alertBody
delegate:self cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
return YES;
【问题讨论】:
UILocalnotification is not appearing when the application is in the background 的可能重复项 我不认为这完全一样,因为它在某些情况下有效,它似乎与我在后台的时间有关,它围绕状态当应用程序在后台并且 UILocalNotification 行为似乎不一致时,有人会遇到这种情况吗? 【参考方案1】:如果应用程序在后台运行,本地通知将不会收到警报或声音,因为它是由您的应用程序直接接收的。在这种情况下,您需要使用presentLocalNotificationNow
提供通知。
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
UIApplicationState applicationState = application.applicationState;
if (applicationState == UIApplicationStateBackground)
[application presentLocalNotificationNow:notification];
【讨论】:
我认为您不想调用 presentLocalNotificationNow。这是为了立即发布本地通知。我相信你可能会在这里陷入无限循环。presentLocalNotificationNow:
只提供本地通知,不会重新发布。以上是关于Iphone presentLocalNotificationNow 在后台应用程序时不会触发警报和声音的主要内容,如果未能解决你的问题,请参考以下文章
在 iphone 5 和 iphone 6 中动态设置字体大小