应用程序处于后台时,iOS本地通知不会触发

时间:2011-08-12 02:32:52

标签: ios background multitasking uilocalnotification localnotification

当我的iOS应用程序退出时,它会注册一系列本地通知,这些通知会在特定时间更新徽章编号。本地通知不会显示弹出窗口,只是更新徽章。在我的旧iPod touch上,它不支持多任务处理,这非常有效。但是,在我启用多任务处理的设备上,我遇到了一个非常奇怪的错误:当我“退出”应用程序时(即它仍然在后台运行,但我正在做其他事情),本地通知不会被触发。当应用程序在后台时,是否有任何原因导致本地通知无法触发?

创建本地通知的代码在循环中运行(我创建了一堆):

    UILocalNotification *localNotification = [[UILocalNotification alloc] init];
    localNotification.applicationIconBadgeNumber = totalCount; // a number generated earlier in the code
    localNotification.timeZone = [NSTimeZone defaultTimeZone];
    localNotification.fireDate = endDate; // a date generated earlier
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
    [localNotification release];

我还在我的app delegate中创建了以下功能,它告诉我在应用程序进入后台之前设置了多少通知:

- (void)applicationDidEnterBackground:(UIApplication *)application {
    NSLog(@"# Notifications: %d", [[[UIApplication sharedApplication] scheduledLocalNotifications] count]);
}

该应用程序会不断告诉我,当它进入后台时会有64个通知(应该设置的数字)。

3 个答案:

答案 0 :(得分:1)

从Apple的开发人员文档中查看以下内容: “设备上的每个应用程序仅限于64个预定的本地通知。系统会丢弃超出此限制的预定通知,仅保留最快发送的64个通知。定期通知将被视为单个通知。”

您是否可以将问题与已安排的通知数量相关联?

您可以在http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/WhatAreRemoteNotif.html

中找到更多信息

答案 1 :(得分:0)

嗯@Jason你需要设置至少alertBody的{​​{1}}以显示警报视图,这就是它的所有内容。

此外,如果您不想在警告框中显示视图选项,请将local notification属性设置为NO。

答案 2 :(得分:0)

Swift版本:

func applicationDidEnterBackground(application: UIApplication) {
       let notification = UILocalNotification()
        notification.alertBody = "App has been entered in background" 
        notification.alertAction = "open" 
        notification.fireDate = NSDate() 
        notification.soundName = UILocalNotificationDefaultSoundName 
        UIApplication.sharedApplication().scheduleLocalNotification(notification)
    }