使用Appollo发布iOS应用遇ITMS-90078错误:缺少推送通知权限
解决ITMS-90078: Missing Push Notification Entitlement错误
这个错误的核心是:苹果检测到你的App调用了Apple Push Notification服务,但最终签名的IPA里没有包含aps-environment权限。以下是具体解决步骤:
1. 确认苹果开发者后台的App ID和配置文件权限
- 登录苹果开发者后台,找到对应App的App ID,确保Push Notifications选项已启用(开发和生产环境都要开启)
- 重新生成用于App Store分发的Provisioning Profile,确保该配置文件包含推送权限,然后同步到Appollo的配置中
2. 配置Flutter iOS项目的推送权限
方式一:通过Xcode启用Capabilities
- 打开项目的
ios/Runner.xcworkspace,选中Runner target - 切换到
Signing & Capabilities标签页,点击+ Capability,搜索并添加Push Notifications - 此操作会自动生成
Runner.entitlements文件,并自动添加aps-environment字段到文件中
方式二:手动配置Entitlements文件
- 如果项目中没有
Runner.entitlements,在ios/Runner目录下创建该文件 - 写入以下内容:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>aps-environment</key> <string>production</string> </dict> </plist> - 在Xcode的Runner target的
Build Settings中,找到Code Signing Entitlements,设置路径为Runner/Runner.entitlements
3. 确保Appollo构建使用正确的签名配置
- 检查Appollo上的项目构建配置,确认选择的是包含推送权限的分发Provisioning Profile,而非自动生成的临时配置
- 若使用自动签名,确保Appollo配置的Team ID对应的开发者账号已正确开启推送权限
4. 验证配置有效性
- 本地先进行测试构建:用Xcode完成Archive操作,导出App Store分发的IPA,然后通过命令行验证权限:
# 先解压IPA unzip your_app.ipa # 检查权限 codesign -d --entitlements - Payload/Runner.app - 输出结果中如果包含
aps-environment = production,说明配置正确
补充说明
Appollo的构建日志显示正常是因为构建过程仅完成编译打包,不会校验苹果要求的权限配置,苹果的权限校验是在IPA上传到App Store Connect后进行的,所以会出现构建成功但上传后报错的情况。
内容的提问来源于stack exchange,提问作者Laura Bastin
相关产品推荐
相关产品推荐

