我有几个问题有关的核心位置。

1)应用户拒绝允许我应用程序使用的核心位置,或者核心位置是不可用于某些原因,是有一个后备的?(器的区域,例如?)

2)我可以缓存设备的位置下的时间?不会的核心位置,这样做本身?

3)我真的需要在日落时在用户的地区中期的春季和我一功能做到这一点,一旦我已经度和纬度的设备。也许我可以仅仅是使一个假设有关次区域?(例如:在美国,承担大约下午7:00.)

编辑:

我真的是试图计算出日落的用户区域用于一个应用程序。没事做的地图。我正在考虑下列事件:

  • 检查对于核心位置可用性。如果是,使用它并将其存储在NSUserPreferences.如果核心位置是不可用,去回退。
  • 检查了储存位置。如果是储存、使用它。如果没有,去...
  • 检查用户选择的时间。
有帮助吗?

解决方案

1)严格地说,如果用户不允许使用CoreLocation或者,如果许可的给予,但CoreLocation不可用,没有其他回退,以获得的用户的地理位置的纬度、经度对。使用的区域可能不起作用在所有的情况。第一,它只会给你一个近似值,这可能是太远离现实。然而,它是由你来判断是否是这种近似是好为你的应用程序。此外,还有一些用户使用的区域不同的一个有关他们的国家。而且,你有没有保证人出国旅行将调整的日期/时间。

2)的核心位置高速缓存默认情况下的最后一个位置检索的GPS单元。然而,对于人们出国旅游这个高速缓存的位置将肯定是错误的(甚至对于人的旅行只有几英里),并且在一般情况下,你应该丢弃在高速缓存价值和本地化,再次用户每次。我的理解是,对旅行的人在他们的国家,这将不会(通常)创造巨大的问题。但是,它只取决于国家:内行驶,意大利将不会改变的时间,但是旅行的美国各地的可能变化的时间长达3小时。

3)我建议,以尝试使用核心位置,并在问题的情况下,只需询问用户输入他/她的本地时间或地理位置(城市应该有足够的你的目的)。如果你选择要求用户的位置,那么你就可以得到相应的纬度/经度对但这将需要一个有效的网络连接。

其他提示

2)从联机文档CLLocationManager:

该位置的服务返回初始位置,尽可能快地,返回缓存的信息时可用。

你可以检查你的时间戳来看如果它是一个缓存的价值,或没有。

3)如果你决定使用的语言环境的一个初始TZ逼近,请记住,用户使用的旅行,并且可能不重他们的区域迅速。你可以获得当前TZ对象有:

[NSTimeZone localTimeZone]
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top