当我的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个通知(应该设置的数字)。
答案 0 :(得分:1)
从Apple的开发人员文档中查看以下内容: “设备上的每个应用程序仅限于64个预定的本地通知。系统会丢弃超出此限制的预定通知,仅保留最快发送的64个通知。定期通知将被视为单个通知。”
您是否可以将问题与已安排的通知数量相关联?
中找到更多信息答案 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)
}