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 中动态设置字体大小

Surface Pro4链接不上iphone手机的热点

iphone13和12外观的区别 iphone13和iphone12对比哪个好

为 iPhone 和 iPhone 4 开发之间有啥变化?

iPhone 5 与 iPhone 4 的图像命名

设置图像以适合 iPhone 5 和 iPhone 6