Ios 如何使用后台模式从本地web服务器创建本地通知

Ios 如何使用后台模式从本地web服务器创建本地通知,ios,swift,websocket,apple-push-notifications,background-process,Ios,Swift,Websocket,Apple Push Notifications,Background Process,我正在开发一个应用程序,它可以与本地Web服务器进行通信并从中接收数据(通过WebSockets或HTTP),而无需使用internet连接 因此,我需要找到一种方法,在不使用Apple推送通知服务的情况下从服务器接收推送通知,即使iPhone处于待机状态,这样通知也会显示在Apple Watch上。例如,我的想法是将数据从服务器发送到iPhone客户端,然后在本地创建通知。为了做到这一点,我需要在后台运行我的应用程序,但我发现的模式帮不了我 -运行任意代码:例如,按下Home键后,我可以在后台

我正在开发一个应用程序,它可以与本地Web服务器进行通信并从中接收数据(通过WebSockets或HTTP),而无需使用internet连接

因此,我需要找到一种方法,在不使用Apple推送通知服务的情况下从服务器接收推送通知,即使iPhone处于待机状态,这样通知也会显示在Apple Watch上。例如,我的想法是将数据从服务器发送到iPhone客户端,然后在本地创建通知。为了做到这一点,我需要在后台运行我的应用程序,但我发现的模式帮不了我

-运行任意代码:例如,按下Home键后,我可以在后台运行应用程序最多3分钟。如果可能的话,我需要让应用程序在后台“永远”执行,以便从服务器接收数据并进行处理

-后台获取:此模式不可靠,因为我无法控制代码何时执行,但由iOS根据用户的行为和其他条件决定

我读过有关静默推送通知、VOIP(推送套件)的文章,但我不明白您是否需要APN来让它们工作

本文是否也描述了静默推送通知

如果是,那么我不能每小时使用超过2/3次的静默推送通知,而且它被认为是低优先级的,不可靠的

这里说,从iOS13开始,我不能再为非VOIP应用程序使用VOIP模式:

如果你无法访问互联网并根据事件在后台唤醒应用程序,是否有一些方法可以绕过APN

谢谢:)

所有推送通知(包括静默通知)均通过APN发送,无例外。他们需要互联网连接才能工作。所有这些都被视为“尽最大努力”,不提供任何保证。如果客户端未联机,则每个应用程序将缓存一个通知,并在用户下次连接时尝试传递该通知。如果在缓存一个通知时另一个通知进入APNs,第一个通知将被删除,并且永远不会发送给用户

您在本地创建的通知称为LocalNotifications,显然不需要internet连接

您可以使用静默通知触发应用程序唤醒并执行少量工作,如果需要,还可以触发本地通知。但正如您所提到的,您可以使用它的频率有限制,并且仍然没有保证

没有办法让应用程序永远在后台运行。在后台运行网络代码会极大地消耗电池电量,因此会被阻止。您所指的模式也是实现这一点的唯一方法(无需越狱)。在后台运行代码的唯一选项是使用后台应用程序刷新,每X请求30秒的时间(其中X由系统决定,可能是分钟,可能是小时,可能是天…取决于用户对应用程序和其他应用程序的使用情况)。还可以在iOS设置中禁用每个应用的后台应用刷新

我不确定您的用例是什么,但是您描述的功能是不可能的。我不知道使用SMS网关发送文本消息是否是一种选择,因为它们将具有更高的SLA,并且不需要互联网连接。但与APN不同,它不是免费的