iOS中蓝牙的实现方案

来源:互联网 发布:淘宝司法拍卖是什么 编辑:程序博客网 时间:2024/05/17 09:20
iOS中蓝牙的实现方案

iOS中提供了4个框架用于实现蓝牙连接
GameKit.framework用法简单
只能用于iOS设备之间的连接,多用于游戏(比如五子棋对战),iOS7开始过期

MultipeerConnectivity.framework
只能用于iOS设备之间的连接iOS7开始引入,主要用于文件共享(仅限于沙盒的文件)

ExternalAccessory.framework
可用于第三方蓝牙设备交互,但是蓝牙设备必须经过苹果MFi认证(国内较少)

CoreBluetooth.framework时下热门
可用于第三方蓝牙设备交互,必须要支持蓝牙4.0
硬件至少是4s,系统至少是iOS6
蓝牙4.0以低功耗著称,一般也叫BLEBluetoothLowEnergy
目前应用比较多的案例运动手坏、嵌入式设备智能家居

GameKit.framework的使用
显示可以连接的蓝牙设备列表

GKPeerPickerController *ppc = [[GKPeerPickerControlleralloc] init];

ppc.delegate = self;

[ppc show];

在代理方法中监控蓝牙的连接

- (void)peerPickerController:(GKPeerPickerController*)picker didConnectPeer:(NSString *)peerID toSession:(GKSession*)session{

   NSLog(@"连接到设备:%@", peerID);

   //关闭蓝牙设备显示界面

   [picker dismiss];

   //设置接收到蓝牙数据后的监听器

   [session setDataReceiveHandler:selfwithContext:nil];

   //保存session

   self.session =session;

}

处理接收到的蓝牙数据

- (void) receiveData:(NSData*)data fromPeer:(NSString*)peer inSession: (GKSession*)session context:(void*)context{

}

利用GKSession给其他设备发送数据
给指定的连接设备发送数据

- (BOOL)sendData:(NSData *)data toPeers:(NSArray*)peers withDataMode:(GKSendDataMode)modeerror:(NSError**)error;

给所有连接的设备发送数据

- (BOOL)sendDataToAllPeers:(NSData *)data withDataMode:(GKSendDataMode)modeerror:(NSError**)error;



例子:

蓝牙的简单使用  得真机测试

#import <GameKit/GameKit.h> // 导入这个框架


    // 过时不代表不可以用, 仅仅说明苹果不再更新了.

    // 1.创建显示可连接蓝牙的控制器

    GKPeerPickerController *peerPic = [[GKPeerPickerController alloc] init];

    // 2.设置代理(连接成功后会通知代理)

    peerPic.delegate = self;

    

    // 3.显示蓝牙列表控制x器 ,就会跳出以框出来给你选择连接别的设备,连接好之后就会调用其代理方法

    [peerPic show];





#pragma mark -GKPeerPickerController

/**

 *  选择连接的设备后就会调用这个方法

 *  @param peerID  连接到的目标蓝牙设备的id

 *  @param session 一次回话, 两个蓝牙设置之间的桥梁, 可以通过这个桥梁传递和接收数据

 */

- (void)peerPickerController:(GKPeerPickerController *)picker didConnectPeer:(NSString *)peerID toSession:(GKSession *)session

{

    NSLog(@"%@" , peerID);

}

0 0
原创粉丝点击