iOS:处理远程(推送)通知

时间:2012-09-19 14:00:03

标签: ios apple-push-notifications

我正在尝试使用远程通知处理所有可能的情况。 应用程序在前台时我很好 - 调用didReceiveRemoteNotification。 问题是当应用程序处于后台状态时,我收到推送通知。 什么都没有。 当应用程序回到前台时,如何让用户知道他有新的远程通知?

3 个答案:

答案 0 :(得分:6)

拦截推送通知的唯一方法是用户点击通知中心的通知(或从锁定屏幕滑动应用图标时)。

在这种情况下,在app进入前台之前,会调用app delegate中的didFinishLaunchingWithOptions方法。您应该使用NSDictionary launchOptions来确定应用是否已从通知中心启动或点击图标(正常使用)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSDictionary *pushDic = [launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];
    if (pushDic != nil) {
        NSLog(@"Notification");
    }
    else {

    }
}

答案 1 :(得分:-3)

只需查看编程指南:

如果点击操作按钮(在运行iOS的设备上),系统将启动应用程序,应用程序将调用其委托的应用程序:didFinishLaunchingWithOptions:method(如果已实现);它传入通知有效负载(用于远程通知)或本地通知对象(用于本地通知)。

答案 2 :(得分:-3)

当然,如果你的应用程序是在后台,那么就没有任何名称......

如果你的应用没有启动(甚至没有在后台暂停),

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

将包含通知有效负载(密钥UIApplicationLaunchOptionsRemoteNotificationKey):

NSDictionary *remoteNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];