React Native,AppStore请求NSLocationAlwaysUsageDescription值

Dav*_*ojo 21 app-store ios react-native

我有一个使用React Native的应用程序.我一直在正确上传到应用程序商店,但今天该应用程序被拒绝,并显示以下消息:

缺少Info.plist密钥 - 此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSLocationAlwaysUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.

缺少Info.plist密钥 - 此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSLocationWhenInUseUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.

我的应用程序不使用任何类型的位置服务.由于发布到应用程序商店的最新版本都没有更新,因此npm包没有更改,它们是相同的版本.

所以我不明白为什么Apple说我试图访问用户位置.

这是Apple Store的变化?如何查看我的应用尝试访问用户位置的位置?

这是我的packages.json

  "dependencies": {
    "axios": "^0.17.1",
    "lodash": "^4.17.4",
    "moment": "^2.18.1",
    "react": "^16.0.0",
    "react-addons-shallow-compare": "^15.5.2",
    "react-native": "0.53.0",
    "react-native-drawer": "^2.3.0",
    "react-native-elements": "^0.19.0",
    "react-native-fetch-blob": "^0.10.5",
    "react-native-fs": "^2.3.3",
    "react-native-linear-gradient": "^2.0.0",
    "react-native-onesignal": "^3.0.7",
    "react-native-orientation": "^3.0.0",
    "react-native-pdf": "^3.0.0",
    "react-native-progress": "^3.4.0",
    "react-native-render-html": "^3.8.1",
    "react-native-router-flux": "^4.0.0-beta.28",
    "react-native-vector-icons": "^4.1.1",
    "react-native-video": "^2.0.0",
    "react-native-video-controls": "^2.0.0",
    "react-redux": "^5.0.4",
    "redux": "^3.6.0",
    "redux-thunk": "^2.2.0"
  }
Run Code Online (Sandbox Code Playgroud)

谢谢.

小智 18

Apple扫描您的二进制文件,查找对此处所述与隐私相关的API的任何调用。

从上面的列表中,触发NSLocationAlwaysUsageDescription要求的方法调用为CLLocationManager requestAlwaysAuthorization。通过快速搜索我的RN 0.46代码库,此调用会react-native/Libraries/Geolocation/RCTLocationObserver.m以和的形式出现。react-native-permissions因此,即使您不从JS调用此代码,它在二进制文件中的存在也会导致Apple对其进行标记。

最简单的解决方案是为NSLocationAlwaysUsageDescription添加一个plist条目,即使您从不要求获得许可也不会出现在用户面前。我今天早上上传到应用商店时遇到了这个问题,添加了标志后,我的应用进行了审核,没有问题。

libRCTGeolocation从技术上讲,从Xcode项目取消链接也应该起作用,尽管我尚未对此进行测试,所以我不能保证您的应用程序仍然可以正常运行。

  • 取消链接libRCTGeolocation确实解决了我正在使用的React Native应用程序的问题。 (3认同)

Dav*_*ojo 1

正如 @TylerTheCompiler 在评论中指出的那样,它又开始工作了。我再次上​​传了相同的汇编,现在该应用程序已被接受。所以这是苹果公司的问题。