是否可以为Windows Phone 7.5或iOS创建后台服务?

时间:2011-10-19 13:40:56

标签: iphone windows-phone-7

我有Android应用程序,运行24/7 Phone的服务每5分钟获取一次GPS位置并发送到服务器。这是要求。

我可以为iPhone编写相同的服务吗?我不确定是否可能。

我可以为WP7编写相同的服务吗?我认为以前不可能运行服务。 7.5中有什么变化吗?

编辑: 我不确定为什么有人会投票。具体是/否问题。

4 个答案:

答案 0 :(得分:6)

在WP7中可以在Mango中引入后台任务。实际上,有一种用于轮询API提供的内置机制,它可以提高电池效率。

不确定它是否会下降到5分钟,认为它比30分钟更大。它也无法与Windows服务相媲美 - 因此请不要使用这种思维方式。后台任务受到很大限制,以保持手机对用户的响应 - 使用它们,你需要很好地满足要求。

后台任务介绍,它还谈到我提到的GPS事物。整个系列非常值得您的带宽和时间下载和观看:

http://channel9.msdn.com/Series/Mango-Jump-Start/Mango-Jump-Start-06-Windows-Phone-Multi-tasking--Background-Tasks

无法接听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,但我还没有测试过。也许它会返回满足精度要求的最新可用缓存位置。