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

使用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):

  • 进入Runner target → 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 07:33:20