Har*_*ngh 9 bluetooth ios coremidi bluetooth-lowenergy ios9
我刚刚发现CABTMIDILocalPeripheralViewControlleriOS用于处理启用蓝牙MIDI可发现性的用户设置.这很好,但是为了将蓝牙集成到我的应用程序的网络MIDI连接的其余部分,能够直接从我的应用程序的代码处理启用而不是依赖这个不透明的VC是很好的.有谁知道这是否可能?
没有公共 API 来管理此功能。根据 Instruments 的调查,该开关似乎会导致CBPeripheralManager. 我认为它将设备设置为蓝牙外围设备,并手动将数据传入和传出MIDIEndpointRef也已创建的设备。
换句话说,不存在一劳永逸的解决方案。如果我进一步沿着这条路线走下去,我将发布代码,除非其他人想尝试一下......
更新
神奇的密码...
- (instancetype)init
{
self = [super init];
if (self) {
_peripheralManager = [[CBPeripheralManager alloc] initWithDelegate:self queue:nil];
}
return self;
}
//---------------------------------------------------------------------
- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral
{
if (peripheral.state != CBPeripheralManagerStatePoweredOn) {
return;
}
info(@"_peripheralManager powered on.");
// CBMutableCharacteristic *tx = [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:RBL_TX_UUID] properties:CBCharacteristicPropertyWriteWithoutResponse value:nil permissions:CBAttributePermissionsWriteable];
//
rx = [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:@"7772E5DB-3868-4112-A1A9-F2669D106BF3"] properties:CBCharacteristicPropertyRead|CBCharacteristicPropertyWriteWithoutResponse|CBCharacteristicPropertyNotify value:nil permissions:CBAttributePermissionsReadable|CBAttributePermissionsWriteable];
CBMutableService *s = [[CBMutableService alloc] initWithType:[CBUUID UUIDWithString:@"03B80E5A-EDE8-4B33-A751-6CE34EC4C700"] primary:YES];
s.characteristics = @[rx];
[_peripheralManager addService:s];
NSDictionary *advertisingData = @{CBAdvertisementDataLocalNameKey : BLE_NAME, CBAdvertisementDataServiceUUIDsKey : @[[CBUUID UUIDWithString:@"03B80E5A-EDE8-4B33-A751-6CE34EC4C700"]]};
[_peripheralManager startAdvertising:advertisingData];
}
Run Code Online (Sandbox Code Playgroud)
正是这些 ID 定义了 MIDI 外围设备。更多信息:
苹果曾经有一个文档在
……现在已经不再是了。我很想找到一个旧副本,因为事实证明接收器代码(模拟CABTMIDICentralViewController)更难破解......
| 归档时间: |
|
| 查看次数: |
1047 次 |
| 最近记录: |