如何在iOS项目中通过Tuist配置开启后台模式、通知等Xcode功能
Tuist 开启后台模式、通知能力的配置方法
由于Tuist采用声明式的工程生成机制,所有工程配置(包括签名、能力、Build Settings)都需要在项目的Swift清单文件中完成定义。生成Xcode项目后直接在Xcode可视化界面修改的配置,会在下次执行tuist generate时被完全覆盖,所有能力配置统一写入对应Target的初始化参数即可,不需要手动编辑entitlements文件或在Xcode面板操作。
核心配置位置
所有能力类配置都需要写入对应App Target初始化方法的capabilities数组中,Tuist会根据声明自动完成entitlements生成、Info.plist字段写入、签名配置关联全流程。
通知能力配置
找到需要开启通知功能的主App Target,在其capabilities列表中添加推送通知能力声明即可:
Target( name: "主App Target名称", platform: .iOS, product: .app, bundleId: "你的应用Bundle ID", infoPlist: .default, sources: ["Sources/**"], capabilities: [ // 配置推送通知能力 // 开发/TestFlight阶段用.development,正式上架切换为.production .pushNotifications(environment: .development) ] )
本地通知不需要额外加特殊配置,开启通知能力后,在应用运行时向用户申请通知权限即可正常使用。
后台模式配置
在同一个Target的capabilities数组中追加后台模式声明,Tuist会自动将配置写入Info.plist的UIBackgroundModes字段,不需要手动编辑Info.plist:
capabilities: [ .pushNotifications(environment: .development), // 按需选择需要的后台模式即可 .backgroundModes([ .remoteNotifications, // 收到APNs推送时,App在后台也能完成数据拉取 .audio, // 后台音频播放 .location, // 后台位置更新 .fetch, // 系统触发的后台刷新 ]) ]
常见踩坑提醒
- 配置修改完成后,必须重新执行
tuist generate让配置生效。直接在Xcode的Signing & Capabilities面板添加的能力,会在下次生成工程时被清空,做的修改不会保留 - 推送通知的环境配置需要和打包环境匹配:开发调试、内部测试阶段使用
development环境,正式上架版本切换为production环境,否则会出现设备无法注册到APNs、收不到推送的问题 - Tuist会自动管理生成的Entitlements文件路径,不需要手动在Build Settings中配置
CODE_SIGN_ENTITLEMENTS参数,避免出现路径匹配错误导致的签名失败
内容的提问来源于stack exchange,提问作者Human
相关产品推荐
相关产品推荐

