我想将运行 tvOS 的新 Apple TV 设置为具有自定义服务的蓝牙外围设备,以便它可以与对应的 iPad 应用程序通信(iPad 是中央蓝牙设备,可以被视为 Apple TV 应用程序的遥控器)。
Apple 提供了一个编程指南,以便在此处执行此操作,但它似乎已经过时了(甚至是它的预发布版本):
根据 iOS 9.1 / tvOS 的发行说明,类和类的init 方法都已删除,并且在 tvOS 上不再可用(使用 XCode 7.1)。您可以在此处找到 CoreBluetooth 框架中的相关更改。CBMutableCharacteristic
CBMutableService
我尝试直接使用该类的startAdvertising
方法,CBPeripheralManager
它正在调用peripheralManagerDidStartAdvertising
委托方法而没有这样的错误:
let peripheralManager = CBPeripheralManager()
let myCustomServiceUUID = CBUUID(string: "12345678-ABCD-1234-ABCD-123456789ABC")
func peripheralManagerDidUpdateState(peripheral: CBPeripheralManager) {
if peripheral.state == .PoweredOn {
print("Bluetooth state is OK.")
self.startProvidingSecondScreenForTestsService()
self.peripheralManager.startAdvertising([CBAdvertisementDataServiceUUIDsKey: [self.myCustomServiceUUID]])
}
}
但是我不知道如何在没有定义任何特征的情况下以这种方式交换数据。
我是否在这里遗漏了某些东西(也许有另一种/更好的方式来定义这些对象),还是Apple出于某种原因故意删除了新 Apple TV 上的自定义服务和特性的功能?