当前位置: 首页 > 面试题库 >

在iOS中使用后台位置更新的最佳方法(Swift)

袁羽
2023-03-14
问题内容

我必须使用Swift
3在iOS中制作一个应用程序,该应用程序在后台运行时每3或5分钟通过API发送一次用户的位置信息。我不知道哪种方法是最好的方法,或者由于苹果严格的背景规定,是否有可能这样做。该位置必须非常精确,并且该应用需要在背景下长时间运行,可能不会消耗太多电池。如果不可能,那么很高兴知道在这种情况下哪种方法最好。非常感谢你。


问题答案:

该应用程序在后台运行时每3或5分钟通过API发送一次用户的位置信息

没有多大意义。如果用户在同一位置站立5分钟该怎么办?您将在服务器中多次输入相同的位置信息?如果您可以在用户位置更改后使用用户位置来更新服务器,那么最好不按固定的时间间隔更新位置呢?

因此,请使用locationManager,设置其委托,并在用户位置更改时而不是按固定的时间间隔开始通过API更新服务器。

我不知道哪种方法是最好的方法,或者由于苹果严格的背景规定,是否有可能

这绝对有可能。您要做的就是选择Location UpdatesXcode的功能。

现在最好的方法是什么?它是一个相对术语。这取决于您的应用如何使用用户的位置信息。如果您不必要地开始观察用户的位置,则将不必要地耗尽用户的iPhone电池,因此Apple会拒绝您的应用程序。

苹果流程的应用程序如何使用位置更新功能?

非常简单。位置更新功能会带来成本,如果您的应用在后台准确地观察到用户位置更新,则会耗尽设备电池的电量。由于这是一项代价高昂的折衷方案,因此Apple希望您仅在应用程序需要它时才使用它。

例如:如果您要制作一个地图应用程序或一个跟踪用户位置变化的应用程序,然后再在地图上绘制图形或其他内容,并让用户知道他的动作(例如正在运行的应用程序),那么绝对可以使用位置更新功能,因为您正在为用户增加价值。

如果您认为令人毛骨悚然!并尝试使用位置更新只是为了使您的应用程序保持生命,并且在后台应用程序中做一些与位置更新完全无关的操作将拒绝您的应用程序。就像极少数开发人员试图变得过分聪明并使用位置更新来使其应用程序与服务器保持同步或以固定间隔上载/下载文件或类似与位置更新无关的方式一样,Apple会拒绝此类应用程序。

所以没有办法令人毛骨悚然吗? 并使用位置更新来做一些与位置本身无关的有用操作?

是的你可以。苹果足够慷慨地允许这样做。例如:当您从一个位置移动到另一位置时,Dropbox会在后台上传图像。它所做的就是寻找用户位置更改,一旦位置更改委托触发,创建带有后台会话的上传任务并开始上传文件。

怎么做?

您仍然可以使用位置管理器。您要做的就是使用

locationManager.startMonitoringSignificantLocationChanges()

仅当位置发生重大变化时,这才会触发您的位置代表:

另一方面,如果您的应用实际使用了用户位置和

startLocationUpdates()

确保您不会不必要地使用位置更新。确保根据您的应用程序要求正确放置距离过滤器。不要贪婪,不要不必要地浪费iOS资源,苹果会很高兴,不会给您带来麻烦:)

结论:

如果您的应用程序确实利用了位置并为用户(例如地图应用程序/运行中的应用程序/旅行应用程序)增加了一些价值,那么请使用startLocationUpdates并正确使用距离过滤器(可选,但很高兴使用)。

如果您感到毛骨悚然,请始终使用startMonitoringSignificantLocationChanges,否则应用必定会被拒绝



 类似资料:
  • 我正在编写一个应用程序,需要高精度和低频率的背景位置更新。解决方案似乎是一个后台NSTimer任务,它启动location manager的更新,然后立即关闭。这个问题以前有人问过: 如何在iOS应用程序中每n分钟更新一次后台位置? 在应用程序进入后台后每n分钟获取一次用户位置 iOS不是典型的后台位置跟踪计时器问题 iOS长时间运行的后台计时器,具有“位置”后台模式 基于位置跟踪的iOS全职后台

  • 我的背景粘性服务是杀死奥利奥和更高的设备,任何解决方案,以获得位置的背景服务时,活动是在后台

  • 问题内容: 我是这里的新用户,但是我已经使用stackoverflow很多次了:)…我是android开发人员,但是现在我正在使用swift在ios应用程序中工作。我对使用xcode完全陌生,也许我的问题在很多方面都很简单…太好了,我真的需要帮助。我正在尝试实现一个背景任务,该任务每十分钟更新一次用户位置。我需要获取经纬度数据,并将此信息发送到API网络服务。我一直在介绍backgroud文档,所

  • 我正在开发一个android应用程序,我需要在后台使用GPS提供商获得更长时间的位置更新,所以当用户不再与它交互时,我需要位置更新。我自己做了一些测试,比较LocationManager的requestSingleUpdate(provider,pendingIntent版本)和requestLocationUpdates(provider,minTime,minDistance,intent版本

  • 我最近将iOS设备升级为使用iOS 7。我们正在开发的一个应用程序使用后台位置服务跟踪设备位置,我们所有的测试人员都报告说,在iOS 7下,该应用程序似乎不再在后台跟踪设备位置。 我们已经验证了应用程序的背景在设备上的设置中启用,并且之前的版本在iOS6下完美运行。即使设备被循环使用,应用程序也会在位置更新后重新启动。 在iOS7下,是否还需要做些什么来使这项工作发挥作用?

  • 我有一个后台服务,每12分钟更新一次位置。我们希望每5-6分钟测试一次位置更新,但在Android文档中我们发现: 为了降低功耗,Android8.0(API Level26)限制了后台应用程序检索用户当前位置的频率。应用程序每小时只能接收几次位置更新。 限制是每小时固定次数?