Ios 如何在swift中接收推送通知时进行服务器调用?

Ios 如何在swift中接收推送通知时进行服务器调用?,ios,iphone,swift,push-notification,Ios,Iphone,Swift,Push Notification,我正在开发一个类似whatsapp的messenger应用程序,它必须通知服务器消息已收到,当调用DidReceiveMemoteNotification时,我将状态发送到服务器。但当应用程序不在前台时,它只在用户点击通知时才调用。如何在应用程序处于后台或未运行时进行服务器调用?要在应用程序处于后台或挂起模式时接收远程通知,首先服务器应在通知有效负载中发送名为“可用内容”的特殊参数。要了解更多信息,请参阅文档: 同时在项目设置中打开此开关: 使用此参数,当您的应用程序将收到推送通知时,它将被唤

我正在开发一个类似whatsapp的messenger应用程序,它必须通知服务器消息已收到,当调用
DidReceiveMemoteNotification
时,我将状态发送到服务器。但当应用程序不在前台时,它只在用户点击通知时才调用。如何在应用程序处于后台或未运行时进行服务器调用?

要在应用程序处于后台或挂起模式时接收远程通知,首先服务器应在通知有效负载中发送名为“可用内容”的特殊参数。要了解更多信息,请参阅文档:

同时在项目设置中打开此开关:

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


实际上,当你的应用程序完全从应用程序切换器中丢弃时,没有托管代码可以运行。据我所知,您应该使用VOIP推送消息,但这种消息仅适用于带有语音呼叫的应用程序,如Skype或WhatsApp。这种应用程序有一些代码要执行,即使它们完全关闭。iOS让他们能够准备语音通话。这就是为什么所有这些信使都使用语音通话——例如,即时发送状态。如果你想要这种互动,你应该在谷歌上搜索更多关于VOIP的信息。但是你的应用程序确实应该有一些语音通话功能,否则它将被应用商店拒绝。

看看这篇文章。我可以给你一个主意。确保如果应用程序被应用程序开关强制退出,则在重新启动应用程序之前,收到通知后,您将无法再运行代码。