使用Codemagic构建Ad-hoc IPA时遇Push Notifications配置文件错误
iOS Codemagic构建提示Push Notifications权限缺失的排查方案
可能的原因及解决步骤
1. 验证Provisioning Profile是否真的包含Push Notifications权限
虽然你提到描述文件已包含该功能,但需确认以下两点:
- 检查Apple Developer后台:进入Certificates, Identifiers & Profiles,找到对应的Provisioning Profile,查看其关联的App ID是否已开启Push Notifications,且描述文件是修改App ID权限后重新生成的(修改权限后旧描述文件不会自动更新)。
- 本地解码验证:将Codemagic中
CM_PROVISIONING_PROFILE的base64内容解码为.mobileprovision文件,用文本编辑器打开,搜索aps-environment字段。如果不存在该字段,说明描述文件未包含推送权限,需重新生成。
2. 检查Xcode项目的Capabilities配置
打开本地Flutter项目的iOS模块(Runner.xcodeproj):
- 进入
Runnertarget →Signing & Capabilities,确认Push Notifications已添加并启用。 - 确保该配置和Apple后台App ID的权限一致,避免出现项目启用了推送但描述文件未同步的情况。
3. 验证Codemagic生成的export_options.plist
xcode-project use-profiles生成的export_options.plist可能缺少推送相关配置,可在工作流中添加步骤打印该文件内容:
cat /Users/builder/export_options.plist
确认文件中provisioningProfiles下的Bundle ID对应正确的描述文件,且是否包含aps-environment字段。如果缺失,可尝试手动指定export options文件,或重新检查描述文件的配置。
4. 确认描述文件在Codemagic中正确解码
在工作流的描述文件配置步骤后,添加验证命令,确保解码后的描述文件包含推送权限:
# 验证解码后的描述文件内容 security cms -D -i "$PROFILE_PATH" | grep aps-environment
如果没有输出,说明CM_PROVISIONING_PROFILE变量的base64内容可能不完整或损坏,需重新从Apple后台导出描述文件并更新Codemagic变量。
5. 检查构建命令参数
确认flutter build ipa --export-method ad-hoc $DART_DEFINES中的参数:
- 确保使用的是Ad Hoc类型的Provisioning Profile,而非其他类型(如App Store)。
- 检查
$DART_DEFINES中是否包含禁用推送的配置,避免影响构建过程中的权限检测。
内容的提问来源于stack exchange,提问作者Benyamin Beyzaie
相关产品推荐
相关产品推荐

