2012-01-09 60 views
1

我有一个GPS应用程序注册运行在background。当我完成一个过程时,我还会显示一个UILocalNotification。这正确显示,如果应用程序是打开的,那么它也出现在Notification Center(从顶部向下滑动)。但是,如果当我的应用程序处于后台或屏幕被锁定时拨打UILocalNotification,我会收到通知,但不会显示在Notification Center中。UILocalNotification没有显示在通知中心,当应用程序在后台

我正确地注册在我的应用程序委托的通知(iOS 5的错误解决):

// Register for notifications 
    [[UIApplication sharedApplication]registerForRemoteNotificationTypes: 
    UIRemoteNotificationTypeBadge | 
    UIRemoteNotificationTypeAlert | 
    UIRemoteNotificationTypeSound]; 

调用通知:

UILocalNotification *localNotif = [[UILocalNotification alloc] init]; 
localNotif.alertBody = msg; 
localNotif.alertAction = NSLocalizedString(@"View", nil); 
localNotif.soundName = @"alert.caf"; 
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1]; 
[[UIApplication sharedApplication] presentLocalNotificationNow:localNotif]; 
[localNotif release]; 

这是一个错误?为什么只有当我的应用程序处于打开状态时才会在Notification Center中显示,即使通知显示给用户,而不是其他时间?

回答

0

从您发布的代码的外观来看,它看起来不像代码在后台运行。看起来好像你正试图在当后台出现本地通知时显示。你不可以做这个。本地通知意味着计划在应用程序运行时在应用程序未运行时稍后关闭,然后即使在应用程序关闭时也会触发。 您需要使用推送通知。看看这里的苹果documentation

编辑:您的应用程序是否启用了通知中心的设置?

+0

不,代码在后台完美工作。它已被广泛测试。本地通知即使在后台工作,也不会在通知中心显示。 – 2012-01-09 02:16:16

+0

您的应用程序是否在设置中为通知中心启用了应用程序? – DGund 2012-01-09 03:02:25

+0

是的。它显示在通知中心,如果应用程序是开放的。在后台时只显示通知警报。 – 2012-01-09 03:20:49

0

您是否已将UIBackgroundModes项添加到Info.plist文件中?

您需要将UIBackgroundModes键设置为位置。

1

您是否也在使用推送通知?如果您只使用本地,我相信没有必要拨打registerForRemoteNotificationTypes:

支票Here

相关问题