1

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

4

2 回答 2

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 指南

于 2013-03-14T07:46:48.057 回答
1

通知应该是这样工作的:如果应用程序是前台应用程序,它会直接接收通知;否则用户会看到一条消息弹出,询问他们是否要激活应用程序。它在 docs中有清楚的描述。如果您想使用 APNS,则无法避免该对话框。

于 2013-03-14T07:48:46.113 回答