【问题标题】:iOS 6: update view after push notification was received, but app was closediOS 6:收到推送通知后更新视图,但应用程序已关闭
【发布时间】:2013-02-18 19:38:46
【问题描述】:

应用收到推送通知后,我想更改我的主ViewController 上的一些按钮的标题。为了实现这种行为,我在我的应用程序委托中重写了 application: didReceiveRemoteNotification: 方法,以使用我想更新的控制器作为其根视图控制器重新实例化 UINavigationController,将按钮的标题设置为我想要的任何内容:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
       UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:self.welcomeViewController];
       [self.window setRootViewController:navController];
       [self.welcomeViewController.buttonToUpdate setTitle: @"Updated Text" forState: UIControlStateNormal];
}

虽然这可能不是最好的解决方案(也许我可以完全忘记 UIButtons 并让视图控制器使用 UITableView 并将其行用作按钮?),但它适用于以下场景:

1) 应用在前台。推送通知提醒弹出,用户点击OK,视图更新正常。

2) 后台/关闭的应用程序。设备处于锁定模式。推送通知到达,用户解锁设备,加载应用,视图也更新正常。

例如,当用户使用另一个应用程序时,问题似乎出现了,并且推送通知到达,但用户不是通过推送通知而是通过点击应用程序图标打开应用程序。在这种情况下,application: didReceiveRemoteNotification: 似乎没有被调用,并且问题中的视图永远不会更新。

希望我的解释清楚。我愿意接受有关不同方法的建议,或者如何使用我的方法处理最后一种情况。

谢谢!

【问题讨论】:

    标签: ios ios6 push-notification apple-push-notifications


    【解决方案1】:

    来自 APNS 开发指南:

    让我们回顾一下运营交付时可能出现的情况 应用程序的本地通知或远程通知。

    在应用程序未运行时发送通知 前景。在这种情况下,系统会显示通知, 显示警报、标记图标、可能播放声音。

    作为呈现通知的结果,用户点击操作 按钮或点击(或单击)应用程序图标。如果 点击操作按钮(在运行 iOS 的设备上),系统启动 应用程序和应用程序调用其委托的 应用程序:didFinishLaunchingWithOptions:方法(如果实现);它 传入通知有效负载(用于远程通知)或 local-notification 对象(用于本地通知)。

    如果在运行 iOS 的设备上点击应用程序图标, 应用程序调用相同的方法,但不提供任何信息 关于通知

    您遇到的行为是点击应用图标时的预期行为。在这种情况下,就好像用户正常启动了应用程序并且没有收到推送通知一样。在这种情况下,您显示不同内容的唯一方法(我能想到的)是在启动应用程序时联系您的服务器并获取一些信息,表明最近向该设备发送了推送通知。

    【讨论】:

    • 我正要发布类似的东西。当您的应用程序处于后台时(在大多数情况下),您无法更改其状态。我们也一直使用通过后端服务器检查状态作为解决方案。
    • 感谢您的回复!我实际上使用 Parse 作为我的后端,但到目前为止无法找到有关如何检查自上次启动应用程序以来是否发送了推送通知的信息。我想我会在 Parse 的帮助论坛上提问。顺便说一句,如果你不介意我问,以这种方式更新你的 UI 是很常见的,还是有更有效的方法?就我而言,我需要通知用户另一个用户已经更新了他们都在编辑的文本,轮到这个用户更新它了。我的想法是通过推送来实现,但也许还有其他技术(Key-Value Observing 等)?
    猜你喜欢
    • 2019-09-26
    • 1970-01-01
    • 2016-09-30
    • 2018-02-23
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多