当app在后台时,如何对接收推送通知执行操作?

时间:2013-03-14 07:37:31

标签: iphone objective-c apple-push-notifications

当我们想要告知用户新数据可用于他的应用程序时,我的应用程序使用远程通知。在代码中,我在appDelegate的didReceiveRemoteNotification方法中编写了updateData方法(从服务器提取数据)。    现在它可以正常工作,如果我的应用程序是活动的,但不适用于非活动模式。我在某个地方错了吗?什么是解决方案?提前谢谢。

2 个答案:

答案 0 :(得分:2)

即使您的应用未处于活动状态,我也知道无法处理推送通知(而且我认为这应该是应该的)

您应该在AppDelegate的didFinishLaunch中检查PNS

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    //...
    //If Push Notification
    NSDictionary *pnsDict = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    if(pnsDict != nil){
        DDLogInfo(@"PNS");
        [self handlePushNotification:pnsDict]; 
    }
    //..
}

通过这种方式,您可以确保捕获所有远程通知。

请注意,您的应用应not depend on pns。 PNS可能无法交付或用户可以将其关闭。应用程序应始终使用pns并以相同方式禁用pns。

有关详细信息,请阅读Apple PNS Guide

答案 1 :(得分:1)

这就是通知应该如何工作:如果应用程序是前台应用程序,它会直接收到通知;否则,用户会看到一条消息,询问他们是否要激活该应用。它清楚地描述了in the docs。如果要使用APNS,则无法避免该对话框。