0

当我的 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];

而且我还在我的应用程序委托中创建了以下函数,它告诉我在应用程序进入后台之前设置了多少通知:

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

该应用程序在进入后台时不断告诉我有 64 条通知(应该设置的数量)。

4

3 回答 3

1

检查 Apple 开发人员文档中的以下内容:“设备上的每个应用程序限制为 64 个预定的本地通知。系统丢弃超过此限制的预定通知,仅保留最快触发的 64 个通知。重复通知被视为单一通知。”

您的问题可能与安排的通知数量有关吗?

您可以在http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/WhatAreRemoteNotif.html中找到更多信息

于 2013-06-04T23:01:14.467 回答
0

好吧@Jason,您需要设置alertBody至少local notification以显示警报视图,这就是它的全部内容。

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

于 2011-08-12T05:14:22.573 回答
0

斯威夫特版本:

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)
    }
于 2016-07-15T13:05:25.843 回答