如何排查iOS Unity应用中调用位置API的插件/SDK以解决App Store警告
定位Unity iOS端隐式调用位置API来源的实操方法
收到ITMS-90683警告时,无需盲目在Info.plist补全权限描述,可通过以下步骤精准定位调用位置API的具体插件/SDK:
- 打开Unity导出的Xcode工程,在
Build Phases -> Link Binary With Libraries列表中确认是否直接链接了CoreLocation.framework,顺着框架的链接依赖,逐一核对工程内所有自定义静态库、SDK依赖的归属方。 - 临时修改Xcode工程
Build Settings -> Other Linker Flags配置,追加-Wl,-verbose参数,重新执行Archive编译,在完整编译输出日志中检索CoreLocation关键字,所有被链接进最终应用二进制、关联CoreLocation能力的库文件都会被清晰列出,可直接对应到具体的插件/SDK文件名。 - 对工程目录下所有第三方库文件做全量符号扫描:将Plugins/iOS目录、Pods目录下所有
.a、.framework格式的库文件,通过终端执行nm -gU [库文件完整路径] | grep CLLocation命令,只要输出结果包含CLLocationManager、startUpdatingLocation这类CoreLocation相关符号,即可判定该库内部调用了位置API。
关键注意事项
苹果自2019年春季App Store审核规则更新后,所有申请访问用户数据的应用都必须匹配对应的权限用途说明,只要最终二进制中存在相关API调用,无论调用是否实际被触发,都需要在Info.plist中补充对应配置,否则会被阻断上架流程。
盲目补全NSLocationAlwaysUsageDescription用途字符串存在明确审核风险:如果应用本身没有后台定位的实际功能,随意填写权限申请理由,很容易在后续苹果人工审核环节因为权限用途与实际功能不匹配被拒绝上架。
排查过程中需要留意:部分具备崩溃采集、广告归因、运动数据采集能力的SDK,往往会内置位置API调用逻辑,且不会主动向开发者披露相关权限依赖,这类是触发ITMS-90683警告的高频来源。
- 如果定位到的SDK确实不需要位置能力,可联系SDK提供方发布移除相关API依赖的精简版本;如果SDK运行必须依赖该权限能力,再结合SDK的实际使用场景,填写合规、清晰的用户可见用途说明。
内容的提问来源于stack exchange,提问作者Arvind B
相关产品推荐
相关产品推荐

