在iOS

时间:2017-09-26 12:33:25

标签: ios iphone swift background-process

我正在处理的应用程序是提供VPN连接,即使应用程序根本没有运行也可以运行。这项服务是付费的,但我也想提供一个限制会话长度和最大数据传输的免费试用。

我遇到过的问题是监控应用在后台或根本没有运行时传输的数据。到目前为止,我提出的最佳解决方案是定期运行小任务,检查用户是否仍在数据限制范围内,如果没有,VPN将断开连接并向用户显示通知。

每次需要时,无声通知会优先吗?根据developer.apple.com的这句话,它们是低优先级的,不是我需要的,但我找不到其他任何东西。

  

无声通知并不意味着让您的应用在后台保持清醒,也不是用于高优先级更新。 APN将无声通知视为低优先级,如果总数过多,可能会完全限制其传递。实际限制是动态的,可以根据条件进行更改,但尝试不要每小时发送多个通知。

如何可靠地完成这项工作?还有其他办法吗?

1 个答案:

答案 0 :(得分:0)

如果这是个人VPN连接(即您只是为标准系统提供配置)并且您不在流程中,那么这是不可能的。故意没有"我希望我的程序一直运行"解。即使你提出一个,苹果也可能会让你失望。

如果你正在编写一个MDM /监督的VPN连接(即你提供了自己的...Flow对象),那么你已经一直在运行,你可以根据需要控制它。我假设你有前者,或者你不会问。

我相信你会倒退。监视服务器上的会话长度,并断开连接。断开连接时,发送推送通知,可以直接显示消息,而无需打开应用程序。这既是强大的又是预期的解决方案。

定期发布静音通知以唤醒自己肯定不会起作用,因为Apple特别不希望你这样做而且他们明确地打破它(因为他们注意到#34;无声通知并不意味着保持你的应用程序在后台唤醒")。它对电池寿命有害。这可以在您的服务器上,在用户的设备上解决。