您的位置:首页 > 移动开发 > IOS开发

iOS 蓝牙的简单使用

2016-05-10 10:43 357 查看
最近简单的了解了一下蓝牙的使用,大致的步骤也就是连接设备,发送数据,接收数据

1、首先导入头文件

#import <GameKit/GameKit.h>


2、设置会话属性,传输数据需要的会话层

// 保留会话
@property (weak, nonatomic) GKSession *session;


3、遵守代理

UINavigationControllerDelegate,UIImagePickerControllerDelegate,GKPeerPickerControllerDelegate


4、首先连接设备

// 1. 创建查找设备的控制器
GKPeerPickerController *ppc = [[GKPeerPickerController alloc] init];

// 2. 设置代理
ppc.delegate = self;

// 3. 弹出控制器
[ppc show];


5、实现代理方法,做连接成功后的操作

// 设备连接成功后会调用该方法 peerID:设备节点ID  session:会话对象   一旦建立连接之后就会建立会话,然后互相传递数据
- (void)peerPickerController:(GKPeerPickerController *)picker didConnectPeer:(NSString *)peerID toSession:(GKSession *)session{

NSLog(@"%@",peerID);
// 设置数据接收着
[self.session setDataReceiveHandler:self withContext:nil];
self.session = session;
[picker dismiss]; // 退出查找设备的控制器

}


6、发送数据

// 发送图片
- (IBAction)sendImage:(id)sender {

if (self.imageView.image) {
return;
}
// 发送到指定设备
//    [self.session sendData:<#(NSData *)#> toPeers:<#(NSArray *)#> withDataMode:<#(GKSendDataMode)#> error:<#(NSError *__autoreleasing *)#>]

NSData *data = UIImagePNGRepresentation(self.imageView.image);

// 发送到所以设备

// GKSendDataReliable   可靠传输(数据一定会被传达,网络有变化时,会重新连接,再次传输) ->TCP
// GKSendDataUnreliable 不可靠传输(数据只会传输一次,没有传到就算了)->UDP

[self.session sendDataToAllPeers:data withDataMode:GKSendDataReliable error:nil];
}


7、接收数据

// 接受数据
// data: 接收到的数据
// peer: 从哪一个节点接收到的数据
// session: 会话
// context:
- (void)receiveData:(NSData *)data fromPeer:(NSString *)peer inSession:(GKSession *)session context:(void *)context{

UIImage *recImage = [UIImage imageWithData:data];
self.imageView.image = recImage;

UIImageWriteToSavedPhotosAlbum(recImage, nil, nil, nil); // 保存图片
}


8、需要注意的是,GameKit蓝牙只能用于iOS设备之间的连接,只能用于同一个应用程序之间的连接,其实有关蓝牙方面的知识比较多,操作起来还是挺复杂的,这里只写了很简单的一些操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: