gpt4 book ai didi

ios - 广告另一个iOS设备后未调用didDiscoverPeripheral

转载 作者:行者123 更新时间:2023-12-01 18:13:17 25 4
gpt4 key购买 nike

基本上,我有两个应用程序,一个用于扫描蓝牙设备,另一个用于广告,而我想做的就是获取所有iOS设备的列表,该列表在我附近的应用程序中扫描iOS设备。

到目前为止,这是我的代码:

Scanning.m:

// Scan for all available CoreBluetooth LE devices
NSDictionary *scanOptions = @{CBCentralManagerScanOptionAllowDuplicatesKey:@(YES)};
NSArray *services = @[[CBUUID UUIDWithString:@"1CC024D6-E413-4B56-993C-831CAF033366"]];

[self.centralManager scanForPeripheralsWithServices:services options:scanOptions];

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
NSLog(@"RSSI: %d", [RSSI intValue]);

}

// method called whenever the device state changes.
- (void)centralManagerDidUpdateState:(CBCentralManager *)central
{
// Determine the state of the peripheral
if ([central state] == CBCentralManagerStatePoweredOff) {
NSLog(@"CoreBluetooth BLE hardware is powered off");
}
else if ([central state] == CBCentralManagerStatePoweredOn) {
NSLog(@"CoreBluetooth BLE hardware is powered on and ready");
}
else if ([central state] == CBCentralManagerStateUnauthorized) {
NSLog(@"CoreBluetooth BLE state is unauthorized");
}
else if ([central state] == CBCentralManagerStateUnknown) {
NSLog(@"CoreBluetooth BLE state is unknown");
}
else if ([central state] == CBCentralManagerStateUnsupported) {
NSLog(@"CoreBluetooth BLE hardware is unsupported on this platform");
}
}

Advertising.m:
    self.peripheralManager = [[CBPeripheralManager alloc] initWithDelegate:self queue:nil];
[self listenForRelays];


/** Required protocol method. A full app should take care of all the possible states,
* but we're just waiting for to know when the CBPeripheralManager is ready
*/
- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral
{

if (peripheral.state == CBPeripheralManagerStatePoweredOn)
{

// We're in CBPeripheralManagerStatePoweredOn state...
NSLog(@"self.peripheralManager powered on.");

// ... so build our service.

}
}


-(void) listenForRelays {

if(self.peripheralManager.state == CBPeripheralManagerStatePoweredOn)
{

NSDictionary *advertisingData = @{CBAdvertisementDataLocalNameKey:@"my-peripheral",
CBAdvertisementDataServiceUUIDsKey:@[[CBUUID UUIDWithString:@"1CC024D6-E413-4B56-993C-831CAF033322"]]};

// Start advertising over BLE
[self.peripheralManager startAdvertising:advertisingData];
}

}

当我在不同的iPhone上运行不同的应用程序时,什么也没发生!

这不会崩溃,但是 didDiscoverPeripheral永远不会被调用:((请帮帮我!是的,我已经阅读了文档,但是仍然没有用:((

干杯

最佳答案

您必须先处于开机状态,然后才能启动扫描-在扫描应用中使用与广告应用中类似的代码。

在iOS 7中,在开机之前启动扫描会在控制台上发出警告,但仍然可以进行。在iOS 8中不起作用。

关于ios - 广告另一个iOS设备后未调用didDiscoverPeripheral,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26320578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com