首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS 6:收到推送通知后更新视图,但app关闭

iOS 6:收到推送通知后更新视图,但app关闭
EN

Stack Overflow用户
提问于 2013-02-19 03:38:47
回答 1查看 2.5K关注 0票数 4

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

代码语言:javascript
复制
- (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)前台的app。弹出推送通知警报,用户触摸OK,视图更新正常。

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

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

希望我的解释是清楚的。我愿意接受关于不同方法的建议,或者如何使用我的方法处理最后一个场景。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-19 03:57:12

来自APNS开发指南:

让我们回顾一下当操作员为应用程序发送本地通知或远程通知时的可能场景。

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

作为所呈现的通知的结果,用户轻敲警报的动作按钮或轻敲(或点击)应用程序图标。如果轻击操作按钮(在运行iOS的设备上),系统将启动应用程序,并且应用程序调用其代理的应用程序:didFinishLaunchingWithOptions:方法(如果已实现);它传入通知有效负载(用于远程通知)或本地通知对象(用于本地通知)。

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

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

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14944024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档