![](/img/trans.png)
[英]iOS App Submission Binary Rejected (2.16) + UIBackgroundModes
[英]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]]]];
該應用程序通過使用NSLocationAlwaysUsageDescription和NSLocationWhenInUseUsageDescription聲明支持.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
來定位。
在您的應用程序聲明NSLocationAlwaysUsageDescription
和NSLocationWhenInUseUsageDescription
就足夠了。
基於:
看起來他們說你不應該需要位置信息, 除非應用程序實際上是活動的。 由於位置信息用於向用戶顯示他們需要進入的方向,因此當應用程序出現時,您應該能夠簡單地調整(當然有一點延遲)。
來自Apple的文檔 :
UIBackgroundModes (Array - iOS)指定應用程序提供特定的后台服務,並且必須允許它在后台繼續運行。
這些密鑰應該謹慎使用,並且只能由提供指定服務的應用程序使用。 如果存在在后台運行的替代方案,則應使用這些替代方案。
例如,應用可以使用重要的位置更改界面來接收位置事件,而不是注冊為后台位置應用。
這是我的分析,雖然同樣可能的是,審稿人那天早上只與他們的重要人員發生爭執,並且只是反復無常:-) Nah,只是在開玩笑,但有時候外人似乎認為他們做出的決定是我們應該說,不是完全一致的。
沒有必要請求后台模式來請求用戶的當前位置。
如果您不需要在后台使用用戶的位置,我建議使用NSLocationWhenInUseUsageDescription 。 用戶在看到NSLocationAlwaysUsageDescription時更傾向於拒絕用戶位置授權,因為他們認為減少設備的電池
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.