所以我正在运行Swift应用程序并使用Parse
来处理我的推送通知。到目前为止,一切都按预期工作。
我通过推送通知发送JSON
个对象,并从收到的数据中更新本地数组。我正在通过application: didReceiveRemoteNotification
处理数据并通过userInfo
发送字典。
当应用程序在前台打开时,这非常有效。当应用程序在后台并且用户在横幅中显示推送通知时,它也可以正常工作。
根据application: didReceiveRemoteNotification
代码处理JSON对象。
但是,当用户未打开通知时,application: didReceiveRemoteNotification
不会运行,并且我的本地阵列不会更新。
如何确保每次发送通知时都会处理JSON对象并相应地更新我的本地数组?
答案 0 :(得分:4)
在用户点击之前,您无法从通知中获取响应或JSON对象,并且didReceiveRemoteNotification
或didFinishLaunchingWithOptions
方法将被调用。
从ios8,您可以设置交互式通知,这对于直接从通知进行交互非常有用,无需在前台打开应用程序。
HERE是交互式通知教程。
愿这对你有所帮助。
答案 1 :(得分:2)
这通常是不正确的方法,您不应该依赖推送通知,用户可能会关闭它们或由于某些原因它们可能无法交付。相反,您应该始终从服务器获取新数据。请阅读Apple Push Notification Service Guide:
重要:发送通知是“尽力而为”,无法保证。它不是为了向您的应用提供数据,只是为了通知用户有新数据可用
答案 2 :(得分:1)
application:didReceiveRemoteNotification:fetchCompletionHandler:
即使用户不会点击或与通知互动,此方法也会调用。
当远程通知到达时,系统会调用
application:didReceiveRemoteNotification:fetchCompletionHandler:
方法。通知通常表示新信息的可用性。在您的app delegate方法中,您可能会开始从服务器下载新数据,以便您可以更新应用程序的数据结构。您还可以使用通知来更新用户界面。
-Apple Inc.
应用状态必须位于UIApplicationStateActive
或UIApplicationStateBackground
。
如果申请状态为UIApplicationStateInactive
,则无法执行任何操作。