在应用未运行iPhone时获取推送通知

时间:2012-02-07 21:33:50

标签: iphone push apple-push-notifications sandbox

我正在开发一款涉及推送通知的iPhone应用程序。正如我在许多文档和教程中看到的那样,它建议在

中注册推送通知
application:(UIApplication *)application 
  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

如下:

- (BOOL)application:(UIApplication *)application 
  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{   
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert| UIRemoteNotificationTypeBadge|  UIRemoteNotificationTypeSound]; 

    ...
} 

现在的问题是,如果应用程序没有运行(即使在后台),当推送到来时,它无法处理推送消息,但是如果我再次从通知区域使用推送消息并再次午餐应用程序,我可以得到我的信息。

即使是第一次吃午饭,我需要做些什么来让我的应用获得推送信息?

1 个答案:

答案 0 :(得分:7)

您可能会混淆注册和接收通知的概念。在第一次调用registerForRemoteNotificationTypes:方法之前,应用程序无法接收推送通知,因为此方法首先提供用于发送推送通知的推送令牌。

所以,你必须谈论在两个不同的情况下接收通知:在初始应用程序启动时,以及在程序执行期间。

要处理第一种类型的通知,您必须检查发送到options的{​​{1}}字典。以下代码显示了如何将启动时收到的通知路由到在应用程序运行时推送通知到达时调用的委托方法。

将其放入application:didFinishLaunchingWithOptions:覆盖:

application:didFinishLaunchingWithOptions: