如何正确配置含/不含ShareExtension的Xamarin Forms iOS应用?
问题1:自动配置生成的配置文件在Apple Developer Portal延迟显示
- 这是Apple开发者门户的缓存同步机制导致的正常现象,无需额外操作。若需快速确认状态:
- 用
Ctrl+F5强制刷新开发者门户页面 - 在Visual Studio中右键iOS项目→选项→iOS签名→重新生成配置文件
- 等待30分钟左右,门户会完成配置文件的同步显示
- 用
问题2:添加ShareExtension后自动配置报错,手动创建ID后扩展不显示
解决自动配置报错
- 出现
Invalid request, Service mapping to the requested URL is not available错误时,手动创建App ID是可行方案,但需确保:- 主应用和ShareExtension的App ID使用同一Team ID前缀
- 主应用启用App Groups服务,扩展启用Share Extension服务
解决ShareExtension不显示问题
- 除确认主应用引用、info.plist和App Group配置外,还需检查:
- 扩展info.plist规则:确保
NSExtension字典下的NSExtensionAttributes包含正确的激活规则,比如支持图片和文本分享的配置:<key>NSExtensionActivationRule</key> <dict> <key>NSExtensionActivationSupportsImageWithMaxCount</key> <integer>1</integer> <key>NSExtensionActivationSupportsText</key> <true/> </dict> - 测试场景:ShareExtension不会在主应用内显示,需在系统相册、Safari等支持分享的应用中点击分享按钮查看
- 构建一致性:扩展项目的构建配置(Debug/Release)需和主应用完全一致,且均选择正确的开发证书
- 设备重启:iOS缓存可能导致扩展不加载,重启设备后再测试
- 扩展info.plist规则:确保
问题3:切换手动配置后仍报自动配置错误,提示配置文件不存在
- 彻底清除自动配置残留并完成手动配置:
- 右键iOS主应用项目→选项→iOS签名,确认已勾选Manual Provisioning
- 检查主应用和ShareExtension的
Info.plist,确保CFBundleIdentifier与手动创建的App ID完全匹配 - 清理项目及IDE缓存:
- 删除项目目录下的
bin和obj文件夹 - 打开Visual Studio→工具→选项→Xamarin→iOS Settings,点击Clear All Caches
- 删除项目目录下的
- 重新导入配置文件:
- 从Apple Developer Portal下载主应用和扩展的最新配置文件
- 在Visual Studio中右键iOS项目→选项→iOS签名→Import Profiles,选择下载的文件
- 确保主应用和扩展项目均选中对应的手动配置文件
- 统一Team配置:所有项目(主应用、扩展)的Team选择需与配置文件关联的Team一致
- 重启Visual Studio后重新构建项目
内容的提问来源于stack exchange,提问作者jho
相关产品推荐
相关产品推荐

