Xcode导出App至iTunes Connect遇签名扩展不在配置文件错误求助
我之前也碰到过几乎一模一样的问题,折腾了好一阵才解决,结合自己的经验和社区里的靠谱方案,给你几个可以逐一尝试的方向:
检查扩展Bundle ID与配置文件的匹配性
首先确保你的OneSignalNotificationServiceExtension的Bundle ID是主App ID的后缀形式(比如主App是com.yourcompany.yourapp,扩展就得是com.yourcompany.yourapp.OneSignalNotificationServiceExtension)。然后去Apple开发者后台,确认这个扩展的Bundle ID已经添加到主App ID的「App Services」中,并且启用了Push Notifications(OneSignal依赖这个权限)。最后重新生成分发专用的Provisioning Profile,一定要确保这个配置文件同时包含主App和扩展的Bundle ID,下载后双击导入Xcode,再分别在主App和扩展的Build Settings里选中这个配置文件。统一Xcode中主App和扩展的签名设置
打开项目后,分别选中主App target和扩展target,进入「Build Settings -> Signing & Capabilities」:- 确认两者的「Team」都选择了正确的开发者账号
- 「Provisioning Profile」都选中刚才重新生成的包含扩展的分发配置文件
- 「Code Signing Identity」在分发模式下要选「Apple Distribution」,别误选成开发用的选项
彻底清理Xcode的签名缓存
除了常规的Cmd+Shift+K清理构建文件夹,还可以试试删除Derived Data:打开Xcode -> 偏好设置 -> 位置,点击Derived Data旁边的箭头,找到对应项目的文件夹直接删除。如果还是不行,干脆重启一下Mac——有时候系统层面的缓存光重启Xcode清不掉。重新验证Apple ID的会话与证书
虽然你已经更新了Apple ID密码,但还是可以在Xcode -> 偏好设置 -> 账号里,选中你的账号点击「Manage Certificates」,确认分发证书是有效的、没有过期。甚至可以尝试先移除这个账号,再重新添加,确保Xcode和Apple开发者后台的会话是完全正常的。检查扩展的Capabilities配置
进入扩展target的Capabilities页面,确保Push Notifications是开启的,并且和主App的相关配置保持一致。另外不要给扩展添加主App没有的Capabilities,否则会导致配置文件不兼容。
另外提醒一下:既然移除扩展会引发其他错误,说明你的项目确实依赖这个扩展,所以最好不要走移除的路子,还是把签名配置捋顺。你不想更改App ID的思路是对的,保持原有ID才能让测试人员继续使用现有版本测试。
内容的提问来源于stack exchange,提问作者Sven Cozijn

