【问题标题】:How to make a server call on receiving push notification in swift?如何在快速接收推送通知时进行服务器调用?
【发布时间】:2017-05-29 10:18:41
【问题描述】:

我正在开发一个像whatsapp这样的信使应用程序,它必须通知服务器收到消息,当didReceiveRemoteNotification被调用时,我将状态发送到服务器。但是当应用程序不在前台时,它只会在用户点击通知时调用。即使应用处于后台或未运行,如何进行服务器调用?

【问题讨论】:

标签: ios iphone swift push-notification


【解决方案1】:

要在您的应用程序处于后台或挂起模式时首先接收远程通知,您的服务器应在通知负载中发送名为 content-available = 1 的特殊参数。要了解更多信息,请查看文档:https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html#//apple_ref/doc/uid/TP40008194-CH17-SW5

在项目设置中也开启这个开关:

使用此参数,当您的应用收到推送通知时,它会在一小段时间被唤醒到后台模式并调用didReceiveRemoteNotification。不要忘记在任务结束时调用completionHandler(<some enum parameter>),否则您的进程可能会被 iOS 意外终止,例如当您尝试执行异步服务器请求时。所以当你的异步方法完成调用didReceiveRemoteNotificationcompletionHandler闭包参数时。

实际上,当您的应用完全脱离应用切换器时,无法运行托管代码。据我所知,您应该使用 VOIP 推送消息 - 但这种消息仅适用于具有语音呼叫的应用程序,例如 Skype 或 WhatsApp。即使完全关闭,这类应用程序也有一些代码要执行。 iOS 为他们提供了准备语音通话的能力。这就是所有这些信使都使用语音呼叫的原因——例如,即时交付状态。如果你想要这种互动,你应该在谷歌上搜索更多关于 VOIP 的信息。但是你的应用确实应该有语音通话功能,否则会被应用商店拒绝。

【讨论】:

  • 如果应用程序开关强制退出应用程序,您将无法在重新启动应用程序之前收到通知时运行代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-11
  • 1970-01-01
相关资源
最近更新 更多