iOS - 在收到推送通知事件时更改视图的内容

Posted

技术标签:

【中文标题】iOS - 在收到推送通知事件时更改视图的内容【英文标题】:iOS - change a view's content on push notification received event 【发布时间】:2013-08-21 18:00:32 【问题描述】:

我来自 android 开发背景。在 Android 中,您发送一个推送通知,然后您使用服务处理其余的事情(创建实际的系统通知、修改应用程序的内容等)。

据我所知,在发送 ios 推送通知时,它会根据您的消息负载在通知中心自动为您创建系统通知。在这里和谷歌上搜索后,我想我必须使用 application:didReceiveRemoteNotification 事件来添加/删除视图的内容。如何访问推送通知的内容,以便我也可以将其放入应用程序中(即使用户在通知中心关闭了通知,我也想在应用程序中显示消息)?稍后(通常是同一天)会有另一条消息从应用程序中删除。

我知道如果应用程序关闭,将不会调用 application:didReceiveRemoteNotification 方法,因此我将不得不使用其他一些事件(如 didfinishlaunching)来获取消息。但是如何访问推送通知的消息本身呢?

【问题讨论】:

参见“处理本地和删除通知”developer.apple.com/library/ios/documentation/… 和“通知负载”developer.apple.com/library/ios/documentation/… 感谢杰夫。我认为我能够通过传递给应用程序的 userInfo NSDictionary 对象获取推送通知的内容:didReceiveRemoteNotification 【参考方案1】:

即使用户在通知中心关闭了通知,我也想在应用中显示消息

这是不可能的。仅当用户从通知中心打开应用程序时,iOS 才会将通知数据传递给您的应用程序。如果用户关闭通知并稍后启动应用程序,则应用程序获取此数据的唯一方法是从您的服务器检索。

应用从通知中心启动时获取通知数据见this question。

【讨论】:

如果我将数据保存到设备上的文件并在打开时检索它会怎样?我想它会起作用吗?我只是不想一直检查服务器以尽量减少带宽使用。 还是保存到sql数据库? @yash 从 iOS6 开始,如果您关闭通知,您将无法获取通知数据。您编写的任何代码(用于保存数据)只会在用户打开应用程序后执行 - 无论是从通知中心还是从主屏幕的启动图标。只有在前一种情况下,通知数据才会传递给您的代码。

以上是关于iOS - 在收到推送通知事件时更改视图的内容的主要内容,如果未能解决你的问题,请参考以下文章

避免在收到推送通知 ios 时加载主视图控制器

Xamarin/Mvvmcross:收到 iOS 推送通知时打开不同的视图控制器

在后台处理应用程序时的 iOS 推送通知

iOS - 收到推送通知后显示视图

收到 C2DM 推送通知时更改活动行为

iOS 更新推送内容扩展