标签:
最近简单的了解了一下蓝牙的使用,大致的步骤也就是连接设备,发送数据,接收数据
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设备之间的连接,只能用于同一个应用程序之间的连接,其实有关蓝牙方面的知识比较多,操作起来还是挺复杂的,这里只写了很简单的一些操作。
标签:
原文地址:http://blog.csdn.net/sw_gegewu/article/details/51361280