【发布时间】:2014-03-31 20:51:41
【问题描述】:
我正在尝试实现后台推送通知处理,但在确定用户是否从发送的推送通知中打开应用程序而不是从图标中打开应用程序时遇到问题。
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
//************************************************************
// I only want this called if the user opened from swiping the push notification.
// Otherwise I just want to update the local model
//************************************************************
if(applicationState != UIApplicationStateActive) {
MPOOpenViewController *openVc = [[MPOOpenViewController alloc] init];
[self.navigationController pushViewController:openVc animated:NO];
} else {
///Update local model
}
completionHandler(UIBackgroundFetchResultNewData);
}
使用此代码,无论用户如何打开应用程序,应用程序都会打开到 MPOOpenViewController。我怎样才能使视图控制器仅在他们通过滑动通知打开应用程序时才被推送?
使用相同的代码,这适用于 iOS 6,但使用新的 iOS 7 方法时,它的行为并不符合我的预期。
编辑:我现在正在尝试在 iOS 7 上运行该应用,我们不支持 iOS 7 之前的任何版本。我在 iOS 6 版本的方法(没有完成处理程序),它的行为方式与我期望的一样。你会滑动通知,这会被调用。如果从图标打开,则永远不会调用该方法。
【问题讨论】:
-
看起来还不错。当您从图标打开应用程序时,永远不会调用此方法。那么究竟你面临的问题是什么,或者你还想实现什么?
-
@ArpitKumarKulshrestha 这不是真的。由于应用程序支持后台远程通知,因此在应用程序仍在后台时调用此方法。例如,如果我在此处设置断点并关闭应用程序。然后当我收到推送时,它会在应用程序仍然关闭的情况下到达断点。这在 iOS6 中没有发生
-
在您的问题行中“使用相同的代码,这适用于 iOS 6,但使用新的 iOS 7 方法,它的行为并不符合我的预期。”。指定它在哪个 iOS 中运行?
-
您不能在 iOS 6 中执行此操作。stackoverflow.com/questions/20487890/…
-
我在 iOS 7 上运行它。在 iOS 7 之前我们不支持任何东西
标签: ios ios7 push-notification apple-push-notifications uiapplicationdelegate