You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin.iOS应用更新需添加未使用权限的原因及解决方案咨询

解决Xamarin.Forms iOS应用App Store审核ITMS-90683及SMS Extension误判问题

问题背景

用Xamarin.Forms开发的iOS应用已上线3年,近期更新时遭遇ITMS-90683错误,要求补充NSContactsUsageDescription、NSMicrophoneUsageDescription等隐私权限说明,但应用并未使用这些权限。上次紧急发布时添加模糊描述后通过,但本次更新因被误判为“使用SMS Fraud Extension拦截短信”被拒,怀疑和之前添加的权限描述、依赖库或Share Extension有关。

针对性解决方案

1. 处理Xamarin.Essentials导致的冗余权限

直接切换到Link All会闪退的话,用自定义链接配置文件精准保留用到的模块:

  • 在iOS项目中新建linker.xml文件,内容示例(根据你实际用到的Essentials功能调整):
<linker>
  <assembly fullname="Xamarin.Essentials">
    <type fullname="Xamarin.Essentials.Preferences" preserve="all" />
    <type fullname="Xamarin.Essentials.Connectivity" preserve="all" />
    <!-- 只保留你实际调用的功能模块 -->
  </assembly>
</linker>
  • 在iOS项目属性的iOS Build选项中,找到Link Description File,选择刚才创建的linker.xml。
  • 这样链接器会移除未用到的Essentials代码,对应的权限需求也会被清除,同时避免全量链接导致的闪退问题。

2. 排查Share Extension的影响

  • 检查Share Extension项目的依赖:确保Extension只引入必要的库,不要包含Xamarin.Essentials这类带多权限的包(如果Extension不需要的话)。
  • 清理Extension的Info.plist:确保里面没有添加多余的权限描述,只保留Extension功能必需的配置。

3. 解决SMS Extension误判审核问题

  • 移除Info.plist中之前添加的模糊权限描述,只保留应用实际用到的权限说明。
  • 在App Store Connect提交审核时,在审核备注中明确说明:

    本应用未集成任何SMS拦截/过滤扩展,之前添加的通讯录权限描述是因依赖库的误检测导致,现已通过链接优化移除了所有未使用的权限相关代码,应用全程不会调用通讯录、麦克风等未声明的权限。

  • 可以附加项目结构截图,证明项目中不存在SMS Extension相关的代码或配置。

额外验证步骤

  • 用Xcode的Organizer导出归档包,查看包内容中的Info.plist和嵌入的框架,确认冗余权限描述和相关框架已被移除。
  • 在本地测试时,用iOS系统的隐私设置检查应用是否请求了未用到的权限,确保实际行为和声明一致。

内容的提问来源于stack exchange,提问作者Pelin Konaray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 12:15:40