2015-04-02 90 views
3

我的应用程序需要用户当前位置到他的方向显示在谷歌地图苹果二进制拒绝(2.16)

下面的特定位置是在网络展示位置的代码视图 -

[self.getDirectionsWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f",currentLocation.coordinate.latitude,currentLocation.coordinate.longitude,self.projectLatitude,self.projectLongitude]]]]; 

该应用程序声明支持位置在.plist中使用NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription

if([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) { 
     [locationManager requestAlwaysAuthorization]; 
    } 
    [locationManager startUpdatingLocation]; 

苹果拒绝应用程序与以下原因

2.16详情

您的应用程序宣布在UIBackgroundModes关键位置支持 你的Info.plist文件,但仍然没有宣布任何功能 需要持久的位置。声明支持位于 Info.plist文件中的UIBackgroundModes项的位置的应用程序必须具有需要持久位置的功能 。

具体而言,我们注意到,路线功能不需要 持久位置信息,因为它不包括 转向导航。

任何帮助将不胜感激,提前致谢。

+1

我想说他们问为什么当你在后台时需要位置服务,因为你只有在审查组出现时才会在前台使用。 – Jef 2015-04-02 06:49:42

+0

使用[locationManager requestWhenInUseAuthorization]代替[locationManager requestAlwaysAuthorization]可能会修复它! – 2015-04-02 06:59:19

回答

4

基于:

  • 我的应用程序需要用户当前位置到告诉他方向在谷歌地图的特定位置。
  • NSLocation 始终 UsageDescription和NSLocationWhenInUseUsageDescription
  • 我们注意到,路线功能不需要持久位置信息,因为它不包括转由turn导航

它看起来像他们表示你不应该需要位置信息,除非应用程序实际处于活动状态。由于位置信息用于向用户显示他们需要进入的方向,所以当应用程序出现时,您应该能够简单地进行调整(当然有一点延迟)。

Apple's documentation

UIBackgroundModes(阵列 - iOS设备)中指定的应用程序提供特定的背景和服务必须被允许继续在后台运行。

这些密钥应该谨慎使用,并且只能由提供指定服务的应用程序使用。在后台运行的替代方案存在的情况下,应该使用替代方案。

例如,应用程序可以使用重要的位置更改界面来接收位置事件,而不是注册为背景位置应用程序。


这会是我的分析,尽管它同样可能的是,评论家刚刚与他们显著其它那天早晨争吵了起来,只是被反复无常:-)不,只是在开玩笑,但有时确实对外界人士来说,他们所做出的决定,我们应该说,并非完全一致。

7

您刚刚从UIBackgroundModes键删除info.plist中

位置支持你,当你想获取位置,当你的应用程序在后台只能使用UIBackgroundModes的位置。

在您的应用程序声明NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription就足够了。

+1

这应该是被接受的答案。 – 2016-08-29 10:24:12

1

没有必要请求后台模式来请求用户的当前位置。

我会建议使用NSLocationWhenInUseUsageDescription如果你不需要在后台使用用户的位置。因为他们认为减少设备的电池,所以用户更倾向于拒绝用户位置授权NSLocationAlwaysUsageDescription因为他们认为减少设备的电池

相关问题