2个iOS设备之间的蓝牙连接(Bluetooth connection between 2 iOS

2019-07-05 04:19发布

我尝试了蓝牙核心框架中的iOS 5.0中引入的。 根据许多线程( 多的一个 StackOverflow上本身):

  1. 蓝牙核心框架可以使用任何硬件,它具有低功耗蓝牙(4.0)硬件支持通信。
  2. 我们可以忘掉专为iPhone / iPod的(MFI)的程序,如果你正在使用的核心蓝牙技术。

我有一个iPhone 5,iPhone 4S,谷歌Android的Nexus 7和我在一起,我相信至少第一2具有的BLE的硬件支持。

我的问题是

好吧,我试着下面给出我的iPhone 4S / iPhone 5的代码,但它无法扫描,找到的iPhone5 / iPhone 4S的坐在附近。 我可以证实,这两个设备必须开启蓝牙功能。 委托方法didDiscoverPeripheral从来没有获取调用。 可能是什么原因? 我缺少的东西吗?

这是我的代码(剥离下来到一个小的测试项目)。

ViewController.h

@interface ViewController:UIViewController<CBCentralManagerDelegate, CBPeripheralDelegate{
}
@property (strong, nonatomic) CBCentralManager *mCentralManager;
@end

ViewController.m

@implementation ViewController
@synthesize mCentralManager;

- (void)viewDidLoad{
    [super viewDidLoad];
    mCentralManager = [[CBCentralManager alloc]initWithDelegate:self queue:nil];
    [self scanForPeripherals];
}

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI {
    NSLog(@"Received periferal :%@",peripheral);
}

- (int) scanForPeripherals {
    if (self.mCentralManager.state != CBCentralManagerStatePoweredOn)
    {
        NSLog(@"self.mCentralManagerState : %d",self.mCentralManager.state);
        return -1;
    }
    //Getting here alright.. bluetooth is powered on.
    NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO], CBCentralManagerScanOptionAllowDuplicatesKey, nil];
    //Documentation says passind nil as device UUID, scans and finds every peripherals
    [self.mCentralManager scanForPeripheralsWithServices:nil options:options];
    return 0;
}
@end

Answer 1:

如spamsink评论的,一个设备需要充当外围设备,以及一个如在为了使它们进行通信的中央。

有一个伟大的示例应用程序从苹果是这样做的。 此外,检查出的WWDC 2012届703 - CoreBluetooth 101和705 - 高级CoreBluetooth伟大的解释和CoreBluetooth框架使用的例子。

还要注意,对于装置处于外设模式,它需要被更新到iOS 6.0或更高版本。



Answer 2:

嗯,我的蓝牙低功耗(BLE)一般的理解是很差。 作为公认的答案中指出, 一个设备能够充当中央和其他人有充当外设通信发生

适用于iOS到iOS和iOS到Mac OS BLE通信一个很好的例子源代码是在这里 。

一些重要的需要考虑的要点

  1. 在iOS 5.0 - > iPhone只能充当中央,所以2台iOS设备之间的通信是不可能的。
  2. 在iOS 6.0 - > iPhone可以为周围也采取行动。所以对于通信发生,至少一个设备必须在iOS 6.0(可能更高版本)运行。
  3. 添加了BLE硬件首先iPhone设备是iPhone 4S。 因此,即使iPhone 4可以运行的iOS 5,BLE沟通是不可能的了。

好了一些信息..



Answer 3:

如果你调用scanForPeripherals功能didUpdateState委托,然后它工作,因为委托功能无法返回。



文章来源: Bluetooth connection between 2 iOS devices