IOS:当app在后台时,调用确实收到了远程通知委托

时间:2014-12-17 05:41:55

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

我的应用程序包含推送通知功能,我已完成编码的一部分,以便在我的应用程序中接收推送通知。当我的应用程序进入后台时,我正在接收推送通知,当我点击推送通知按钮应用程序来到前台并且调用了接收远程通知委托方法。当我的应用程序在后台接收推送通知但没有通过点击屏幕顶部的推送通知按钮打开应用程序时,我需要调用相同的委托方法。我编写了如下代码。

   if ([application respondsToSelector:@selector(registerUserNotificationSettings:)])
 {
    UIUserNotificationType userNotificationTypes = (UIUserNotificationTypeAlert |
                                                    UIUserNotificationTypeBadge |
                                                    UIUserNotificationTypeSound);

   UIUserNotificationSettings *settings = [UIUserNotificationSettings 
  settingsForTypes:userNotificationTypes

   categories:nil];
    [application registerUserNotificationSettings:settings];
    [application registerForRemoteNotifications];
}
else
{
    // Register for Push Notifications, if running iOS version < 8
    [application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
                                                     UIRemoteNotificationTypeAlert |
                                                     UIRemoteNotificationTypeSound)];
}

 if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
    [application registerUserNotificationSettings:[UIUserNotificationSettings  



     settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge
   |UIUserNotificati
 onTypeSound categories:nil]];
  }

我的最终意图是当应用程序处于后台时调用确实接收远程通知。

2 个答案:

答案 0 :(得分:3)

当应用关闭或在后台时,不会调用 didReceiveRemoteNotification 委托。当您点按通知时,它会启动应用并调用方法。您可以执行必要的操作此刻就像减少图标徽章一样。这是iOS中推送通知的工作流程。更多的事情是当应用程序关闭并且您正在点击通知时,将不会调用didReceiveRemoteNotification。将调用 ApplicationDidFinishLaunching ,您可以使用launchoption字典识别它是否从通知启动

答案 1 :(得分:0)

如果应用程序在后台接收通知&用户将在不点击通知的情况下打开应用程序,但根本不会收到通知。

要实现这一目标,你需要尝试不同的事情。

以下是一个可能对您有所帮助的想法:

从服务器推送通知时&在App中成功收到,您可以通过收到的Api发送消息。

现在,如果在上述情况下,在应用服务器中未收到通知将无法获得成功的接收消息。所以在这种情况下,它可以保存在服务器的待处理通知表中。

现在,一旦你打开设备1 api将检查服务器上的任何待处理通知&如果找到,那将得到回应&之后它将从服务器中删除。

注意:这是一个早期尝试的想法&工作。您可以根据自己的要求进行改进。

希望它对你有用。