我想创建一个应用程序,每隔30分钟就会向服务器发送一个关于用户位置的信息。需要提供特定于位置的推送通知。
我需要Android / iOS的这种功能,它可以在后台运行(如果设备重新启动也是如此)。我发现了一些涉及后台服务的文章,并且我创建了后台服务,但是在重新启动电话后它不会工作。
Android和iOS有可能吗?我怎样才能做到这一点?
答案 0 :(得分:0)
使用iOS,没有。使用Android,是的。
Apple竭尽全力限制应用程序可以执行的操作。您可以在后台长时间做一些事情(GPS,播放音频,Voip等),但重启后,您的应用程序将不会重新启动,直到用户再次打开它。这有例外。重启后,Voip应用程序可以重新启动,但苹果不会批准您的应用程序用于App Store,除非您的应用程序中的用户实际上有一个位置可以使用Voip功能。 Geofences是一种可能性,但我还没有使用过该功能的经验。根据我的经验,Apple尽其所能确保您的应用不会永远运行。
使用android,有更多的灵活性,你提出的建议是完全可能的。我在下面列出了一些重要的链接,因为大多数这些解决方案都比我在这里做的更好。
基本上你需要注册为启动接收器,然后在收到启动事件时发送一个启动钛安卓服务的意图。我没有开始钛服务的经验,但我确信这是一个你需要解雇的简单意图。无论哪种方式,您都需要一个用于此本机代码的模块。我附上了一个可以帮助你的bencoding钛模块链接,虽然可能还有其他一些。您甚至可能需要自己编写代码。
三星因使用SPCM功能停止您的应用程序而臭名昭着。您可能想要熟悉它。我在下面添加了一个stackoverflow讨论链接。
我不知道您的所有系统要求,但老实说,对于任何应用程序,我都会尽力不要永远运行。它会损害用户的电池寿命,并会增加很多复杂性。也许您可以让应用程序在收到推送通知时检查GPS坐标并在那里决定然后是否向用户发出通知?需要考虑的事情。
无论哪种方式祝你好运!