我有Android应用程序,运行24/7 Phone的服务每5分钟获取一次GPS位置并发送到服务器。这是要求。
我可以为iPhone编写相同的服务吗?我不确定是否可能。
我可以为WP7编写相同的服务吗?我认为以前不可能运行服务。 7.5中有什么变化吗?
编辑: 我不确定为什么有人会投票。具体是/否问题。
答案 0 :(得分:6)
在WP7中可以在Mango中引入后台任务。实际上,有一种用于轮询API提供的内置机制,它可以提高电池效率。
不确定它是否会下降到5分钟,认为它比30分钟更大。它也无法与Windows服务相媲美 - 因此请不要使用这种思维方式。后台任务受到很大限制,以保持手机对用户的响应 - 使用它们,你需要很好地满足要求。
后台任务介绍,它还谈到我提到的GPS事物。整个系列非常值得您的带宽和时间下载和观看:
无法接听iPhone。
答案 1 :(得分:1)
在ios4 +上也可以,但它不会被时间触发。您可以注册精确(gps)或模糊位置(wifi和wan位置),这些位置可以在后台获取但是并不总是可以将该数据发送到服务器,因为在后台运行10分钟后您的应用程序不允许保留网络连接活着。因此,您必须缓冲该数据,并且必须等到用户启动您的应用程序。
ios会根据所需的准确度将通知推送到您的应用,具体取决于distance-filter
ios-apps在服务和活动之间没有区别(比如在android中)。它全部合并在一个应用程序中。
答案 2 :(得分:0)
这里也有“一些限制”(很多),但也许微软推送服务适合你:
Push Notifications Overview for Windows Phone
因为轮询不是一个好的做法,所以在这种情况下推送会更好。
答案 3 :(得分:0)
在WP7芒果中,您无法从后台代理获得新的位置。以下代码将返回最新的可用位置(最长15分钟):
private GeoPosition<GeoCoordinate> GetCachedLocation()
{
GeoCoordinateWatcher geoWatcher;
geoWatcher = new GeoCoordinateWatcher(); //Start a new watcher with default level of accuracy
geoWatcher.Start();
//Get latest cached position
GeoPosition<GeoCoordinate> position = geoWatcher.Position;
geoWatcher.Stop();
return position;
}
如您所见,这使用GeoCoordinateWatcher。根据MSDN(http://msdn.microsoft.com/en-us/library/hh202962(v = vs.92).aspx):
此API用于获取设备的地理坐标, 支持在后台代理中使用,但它使用缓存 位置值而不是实时数据。缓存的位置值是 每隔15分钟由设备更新一次。
除此之外,我还没有找到太多信息。你可以创建一个具有自定义精度的GeoCoordinateWatcher,但我还没有测试过。也许它会返回满足精度要求的最新可用缓存位置。