在IOS的背景上聊天应用程序同步

我有一个由JS开发的聊天应用程序.我想在一段时间内发送PING到服务器一次.如果应用程序在前台运行,这不是问题.问题是用户最小化或打开其他应用程序.我的应用程序失去了重点,并处于暂停状态.

我有以下两个用例.

>要保持聊天会话打开,我需要每X分钟将PING发送到服务器(它的一个IRC服务器),甚至应用程序在后台运行.
>我们还需要检查新消息(通过本地http服务器上的ajax),并向通知队列添加本地通知,以便当用户单击应用程序时可以恢复

我发现苹果不允许在后台运行应用程序.如果他们允许他们需要特别许可.我发现一些应用程序通过请求有限的长度执行时间来实现.
获得最高可能的后台执行时间的最佳方法是什么?作为聊天应用程序,我可以请求voip,位置或任何其他方式的权限吗?

注意:应用程序将在没有Internet的环境中运行.因此,推送通知将不会在这里工作.

更新:做了很多搜索后,我发现了background fetch.它似乎背景提取将套装.但仍然是问题依然存在,并没有及时召开.

解决方法

这听起来像一个有趣的问题.从阅读各种评论,听起来你希望在当地网络上工作,所以你有wifi,但是路由器/基站的WiFi路由器没有连接到实际的网络?

因为后台刷新不可预测 – 你永远不会知道什么时候更新 – 你可能想要获得创意.

您可以研究利用iOS VOIP支持,只有没有Voice! Apple has some tips on VOIP here. VOIP基本上使用称为SIP(会话发起协议)的东西,它是呼叫的信令层,很像HTTP.这是您想要利用的这个SIP层.

这不是很容易,但应该是可以实现的.设置您的应用程序使用VOIP,然后查看像PJSip作为您的SIP库.然后,在您的本地网络上有一个SIP服务器(我确信有很多开源实现),您可以注册您的iPhone(所以您的服务器知道您的手机在哪里,假装是一个VOIP手机).这应该是有效的,因为我不知不觉中要通过苹果,而且会在本地网络上快乐地运行.

然后,服务器可以通过SIP向手机发送一条消息,好像是在煽动VOIP会话.你的应用程序被唤醒,获取消息 – 理想情况下,如果可能,从SIP消息 – 然后只是不启动会话. SIP仅用于创建会话,而不仅仅是VOIP.当我在电信研发(很久以前)工作时,我们正在使用它在文本/语音/视频之间交换,所有这些都使用本地服务器.

你必须跳过很多圈才能使这项工作,但这将是非常棒的.我从来没有尝试过这个实际的用例 – 尤其是在iOS中,但我相当肯定它会工作.这是一个软糖,但应该得到你需要去的地方.

祝你好运!

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...