如何为iPad与Catalyst应用设置独立的蓝牙权限?
解决iPad与Catalyst版本蓝牙权限区分配置的方案
不用每次手动切换权限设置,有几种可靠的方法可以实现分平台配置:
1. 拆分Info.plist文件
- 复制一份现有的Info.plist,命名为
Info-MacCatalyst.plist - 在原iOS版的Info.plist中保留蓝牙权限声明(
NSBluetoothAlwaysUsageDescription和NSBluetoothPeripheralUsageDescription) - 在
Info-MacCatalyst.plist中删除这两个权限条目 - 打开项目设置,在Build Settings中找到Info.plist File选项:
- 为iOS目标选择原Info.plist
- 为Mac Catalyst目标选择
Info-MacCatalyst.plist
2. 使用XCConfig配置文件
- 创建两个配置文件:
iOS.xcconfig和MacCatalyst.xcconfig - 在
iOS.xcconfig中添加权限配置:INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = 用于查找丢失的Apple Pencil INFOPLIST_KEY_NSBluetoothPeripheralUsageDescription = 用于查找丢失的Apple Pencil MacCatalyst.xcconfig中不添加上述两行- 在项目的Project -> Info -> Configurations里,为iOS和Mac Catalyst目标分别对应选择各自的xcconfig文件
3. 代码层面隔离蓝牙逻辑
配合上面的配置,在代码里用条件编译确保Catalyst完全不涉及Core Bluetooth逻辑:
#if !targetEnvironment(macCatalyst) // 这里写iPad上的Apple Pencil查找相关Core Bluetooth代码 #endif
这样提交审核时,Catalyst版本既没有权限声明,也没有蓝牙相关代码,就不会因为不必要的蓝牙权限被拒了。
内容的提问来源于stack exchange,提问作者Victor Engel
相关产品推荐
相关产品推荐

