如何处理未打开的推送通知(iOS、Swift)
Posted
技术标签:
【中文标题】如何处理未打开的推送通知(iOS、Swift)【英文标题】:How to Handle Push Notifications that are not Opened (iOS, Swift) 【发布时间】:2015-05-05 08:37:37 【问题描述】:所以我正在运行一个 Swift 应用程序并使用 Parse
来处理我的推送通知。到目前为止,一切都按预期工作。
我正在通过推送通知发送JSON
对象,并根据收到的数据更新本地数组。我正在通过application: didReceiveRemoteNotification
处理数据并通过userInfo
发送字典。
当应用程序在前台打开时,这非常有效。当应用程序在后台并且用户在横幅中显示推送通知时,它也很有效。
JSON 对象按照application: didReceiveRemoteNotification
代码处理。
但是,当用户没有打开通知时,application: didReceiveRemoteNotification
不会运行,我的本地数组也不会更新。
如何确保每次发送通知时 JSON 对象都得到处理并相应地更新我的本地数组?
【问题讨论】:
【参考方案1】:在用户单击通知并调用didReceiveRemoteNotification
或didFinishLaunchingWithOptions
方法之前,您无法从通知中获取响应或JSON 对象。
从ios8,你可以设置交互式通知,这对于直接从通知进行交互很有用,而无需在前台打开应用程序。
HERE它是交互式通知的教程。
希望对您有所帮助。
【讨论】:
【参考方案2】:这通常是不正确的方法,您不应依赖推送通知,用户可能会关闭它们或由于某些原因可能无法发送。相反,您应该始终从服务器获取新数据。读自Apple Push Notification Service Guide:
重要提示:发送通知是“尽力而为”,不能保证。它不是为了向您的应用提供数据,只是为了通知用户有新数据可用
【讨论】:
感谢您的信息!我现在将通过服务器更新我的本地数据……我需要一大杯咖啡! 嗨,我知道这有点晚了,但我也一直在使用 Parse,Parse 具有非常强大的在线和离线数据库功能,如果您使用这些功能,可以让您的生活更轻松想做服务器端的工作。【参考方案3】:application:didReceiveRemoteNotification:fetchCompletionHandler:
即使用户不会点击或与通知交互,此方法也会调用。
当远程通知到达时,系统调用
application:didReceiveRemoteNotification:fetchCompletionHandler:
方法。通知通常表明新信息的可用性。在您的应用程序委托方法中,您可能会开始从服务器下载新数据,以便您可以更新应用程序的数据结构。您也可以使用通知来更新您的用户界面。
-苹果公司
应用的状态必须是UIApplicationStateActive
或UIApplicationStateBackground
。
如果应用程序的状态是UIApplicationStateInactive
,你不能做任何事情。
【讨论】:
以上是关于如何处理未打开的推送通知(iOS、Swift)的主要内容,如果未能解决你的问题,请参考以下文章