我正在寻找一些反馈,博客链接等,为iPhone GPS开发提供一些提示和技巧.我已阅读并理解API,我已启动并运行我的演示应用程序等,但我在iphone上遇到了一些带有gps的"怪癖".例如,当您的iphone进入"省电"模式时,您似乎会收到更少的位置更新.我已经读过你可以通过在你的应用程序中播放音乐来解决这个问题[不确定这是否属实].
看来,制作合理的计步器的条件,你应该过滤掉任何水平精度小于20米的读数.这听起来不错吗?
在网上有没有任何类型的iphone gps陷阱清单?
提前致谢.
我不知道任何具体的清单,但这里有一些你应该记住的事情:
你没有进行GPS查找.您正在进行核心位置查找.核心位置可能会也可能不会从GPS获取其信息.很多人仍然使用没有GPS的3g之前的iPhone,即使在3g手机上,GPS在许多情况下也可能无法使用(例如,如果这个人在室内).在这些情况下,手机将尝试基于手机信号塔进行三角测量,Core Location将返回结果.它不如GPS精确得多.
核心位置将缓存数据.它为您的应用提供的第一个读数很可能是一个旧读数,可能会也可能不准确,具体取决于手机是否已移动.确保检查任何位置的时间戳,看看它是否在您的应用开始之前.
我不知道你的"节电"模式是什么意思,但是如果你想到屏幕被锁定/关闭的时候,那么如果你的应用程序仍然在运行,这并不会阻止Core Location运行.相反,如果您在使用Core Location的应用程序运行时锁定手机,则可以比预期更快地耗尽手机电池,因为手机将在新位置数据可用时继续更新应用程序.您可以通过监听UIApplicationWillResignActiveNotification来检测屏幕锁定,以及UIApplicationDidBecomeActiveNotification来检测解锁,从而避免在您的应用程序中出现这种情况.
更高精度的结果将需要更多的时间来获取,因为等待的时间越长,结果越好,达到极限.如果您确定需要在N米范围内,请考虑用户可能需要多长时间才能站在那里等待手机回家.
根据您对应用程序的使用方式,20米是否足够准确是您可以回答的问题.测试应用程序,看它是否按照您希望的方式工作.
Tom有一个很好的答案(我想特别注意第一个值的通常返回可能是一个较旧的缓存位置)但我还有一些要添加的内容:
如果要强制它至少再向您发送一次位置更新,您可以告诉位置管理器停止并重新启动.
如果您不知道,CLLocation中有便捷方法可以为您提供两个位置之间的距离.
正如文档所述,您应该实现locationManager:didFailWithError:即使您没有(如果只是为了暂停位置管理器更新一段时间).
彻底测试用户不允许应用程序位置更新的情况!
非常非常偶然地,您可能无法获得更新(即您获得更准确的位置,然后是稍早不太准确的位置)
模拟器将为您提供位置更新,但始终会将您的位置报告为Apple HQ.