我有一个由JS开发的聊天应用程序.我想在一段时间内发送PING到服务器一次.如果应用程序在
前台运行,这不是问题.问题是
用户最小化或打开其他应用程序.我的应用程序失去了重点,并处于暂停状态.
@H_
874_2@
我有以下两个用例.
@H_
874_2@>要保持聊天会话打开,我需要每X分钟将PING发送到服务器(它的
一个IRC服务器),甚至应用程序在
后台运行.
>我们还需要检查新消息(通过本地
http服务器上的aja
X),并向
通知队列
添加本地
通知,以
便当
用户单击应用程序时可以恢复
@H_
874_2@我发现苹果不允许在
后台运行应用程序.如果他们允许他们需要特别许可.我发现一些应用程序通过请求有限的长度执行时间来实现.
获得最高可能的
后台执行时
间的最佳
方法是什么?作为聊天应用程序,我可以请求voip,位置或任何其他方式的权限吗?
@H_
874_2@注意:应用程序将在没有Internet的环境中运行.因此,推送
通知将不会
在这里工作.
@H_
874_2@更新:
做了很多
搜索后,我
发现了background fetch.它似乎背景
提取将套装.但仍然是问题依然存在,并没有及时召开.
这听起来像
一个有趣的问题.从阅读各种
评论,听起来你希望在当地网络上工作,所以你有wifi,但是路由器/基站的WiFi路由器没有连接到实际的网络?
@H_
874_2@因为
后台刷新不可预测 – 你永远不会知道什么时候更新 – 你可能想要获得创意.
@H_
874_2@您可以研究利用iOS VOIP
支持,只有没有Voice!
Apple has some tips on VOIP here. VOIP基本上使用称为SIP(会话发起协议)的东西,它是呼叫的信令层,很像
http.这是您想要利用的这个SIP层.
@H_
874_2@这不是很容易,但应该是可以实现的.设置您的应用程序使用VOIP,然后查看像
PJSip作为您的SIP库.然后,在您的本地网络上有
一个SIP服务器(我确信有很多开源实现),您可以@L_
197_28@您的iPhone(所以您的服务器知道您的手机在哪里,假装是
一个VOIP手机).这应该是有效的,因为我不知不觉中要通过苹果,而且会
在本地网络上快乐地运行.
@H_
874_2@然后,服务器可以通过SIP向手机发送一条消息,好像是在煽动VOIP会话.
你的应用程序被唤醒,
获取消息 – 理想情况下,如果可能,从SIP消息 – 然后只是不启动会话. SIP仅
用于创建会话,而不仅仅是VOIP.当我在电信研发(
很久以前)工作时,我们正在使用
它在文本/语音/视频之间交换,
所有这些都使用本地服务器.
@H_
874_2@你必须跳过很多圈才能使这项工作,但这将是非常棒的.我从来没有尝试过这个实际的用例 – 尤其是在iOS中,但我相当肯定它会工作.这是
一个软糖,但应该得到你需要去的地方.
@H_
874_2@祝你好运!