在退出或暂停应用程序时处理推送有效负载

时间:2015-08-26 11:54:41

标签: ios objective-c ios8 push-notification apple-push-notifications

我已经完成了除收到Push Payload之外的所有情况。

这是我的实施:

如果应用程序处于Background,inActive或Active状态,那么我们可以使用此方法接收通知。

-(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
       //Received Notification when the Application is Active, InActive or in Background State. 
       // NOTE : I am Handling below line of code with the Appropriate Conditions using Application States in my Code.
       [self handleNotificationDataWithDictionary:dictionary updateUI:YES];
}

如果应用程序被暂停或退出,那么我们可以在didFinishLaunchingWithOptions方法中接收通知有效负载,但仅限于用户点击通知的情况。

以下是通过主屏幕或锁定屏幕点击推送通知退出或暂停并打开应用程序时接收有效负载的实现,

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
       if (launchOptions != nil)
       {
           NSDictionary *dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
           if (dictionary != nil)
           {
               [[[UIAlertView alloc] initWithTitle:@"Finish" message:@"Test" delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil] show];
               NSLog(@"Launched from push notification: %@", dictionary);
              [self handleNotificationDataWithDictionary:dictionary updateUI:NO];
           }
       }
}

现在最后一个案例是,当应用程序被暂停且用户没有使用通知中心打开应用程序而是通过点击应用程序图标打开应用程序。 当我测试我的代码时,在这种情况下我无法收到Payload。我google了很多,但没有找到解决这个案例的方法。

根据应用程序文档,当App不活动时,我们只能在后台或InActive模式下获得Payload。然后如何为Suspended State实现它?

我真的需要帮助,请发布你最好的答案,以便它也可能对其他人有用。

2 个答案:

答案 0 :(得分:2)

简单地说 - 如果用户点击应用程序图标,您的推送就会消失!无法检索该信息。

Official Documentation about this:

  

如果在运行iOS的设备上点按了应用图标,该应用会调用相同的方法,但不提供有关通知的信息。

答案 1 :(得分:1)

hris.to是绝对正确的,如果你想在你的应用程序中使用自定义通知面板,你必须构建一个API,然后再次从服务器获取最新的通知。