繁体   English   中英

Apple Binary被拒绝(2.16)

[英]Apple Binary Rejected (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]]]];

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

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

Apple拒绝了该应用程序,原因如下

2.16详情

您的应用程序在Info.plist文件的UIBackgroundModes键中声明了对位置的支持,但仍未声明任何需要持久位置的功能。 声明支持Info.plist文件中UIBackgroundModes键位置的应用程序必须具有需要持久位置的功能。

具体来说,我们注意到Directions功能不需要持久的位置信息,因为它不包括精细导航。

任何帮助将不胜感激,在此先感谢。

您只需从info.plist中的UIBackgroundModes键中删除位置支持

因为当你的应用程序在后台时想要获取位置时,你必须只使用UIBackgroundModes来定位。

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

基于:

  • 我的应用程序要求用户当前位置向他显示谷歌地图中特定位置的方向
  • NSLocation Always UsageDescription和NSLocationWhenInUseUsageDescription
  • 我们注意到Directions功能不需要持久的位置信息,因为它不包括精细导航

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

来自Apple的文档

UIBackgroundModes (Array - iOS)指定应用程序提供特定的后台服务,并且必须允许它在后台继续运行。

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

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


这是我的分析,虽然同样可能的是,审稿人那天早上只与他们的重要人员发生争执,并且只是反复无常:-) Nah,只是在开玩笑,但有时候外人似乎认为他们做出的决定是我们应该说,不是完全一致的。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM