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

如何通过CMake Xcode Generator启用Push Notifications推送通知能力?

解决CMake Xcode Generator启用推送通知无效的问题

问题原因

直接设置XCODE_ATTRIBUTE_ENABLE_PUSH_NOTIFICATIONS无法生效,是因为iOS推送通知的启用需要同时满足多条件:仅靠单个CMake属性无法完成全部配置,必须结合权限文件、Info.plist配置以及Xcode Capabilities开关三者协同。

可行解决方案

步骤1:给Info.plist添加后台推送支持

如果你的项目使用Info.plist.in模板(如代码中所示),在模板文件里插入以下内容:

<key>UIBackgroundModes</key>
<array>
    <string>remote-notification</string>
</array>

这一步是让应用获得后台接收推送的基础能力。

步骤2:创建推送权限配置文件

在iOS项目目录下新建一个权限文件,比如MyApp.entitlements,内容如下:

<?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>
    <!-- 开发环境填development,生产环境切换为production -->
    <key>aps-environment</key>
    <string>development</string>
</dict>
</plist>

步骤3:在CMake中完善配置

修改set_target_properties代码块,添加权限文件关联,并保留推送开关设置:

set_target_properties(${TARGET_NAME} PROPERTIES
    # ... 你已有的其他属性 ...

    # 关联权限文件
    XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/ios/MyApp.entitlements"
    # 开启Xcode推送通知开关
    XCODE_ATTRIBUTE_ENABLE_PUSH_NOTIFICATIONS YES
    # 可选:指定开发团队ID,确保签名权限有效
    # XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "你的团队ID"
)

额外注意事项

  • 确保你的Apple开发者账号已开通推送服务,且对应App ID已启用Push Notifications功能
  • 开发/生产环境的aps-environment值需对应切换,可通过CMake变量动态控制
  • 建议使用CMake 3.20+版本,该版本对Xcode Capabilities的支持更稳定

内容的提问来源于stack exchange,提问作者Jiri Zaloudek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:59:52