1.GameKit.framework(用法简单):没有进度条,因此传比较少的可以,大点的还是算了吧,多用于五子棋等小的游戏,老得
实例:从a手机图片传到b手机
1-1.首先要创建一个显示图片的imageView;
UIImageView *imageV;
1-2.创建三个按钮分别是链接蓝牙、选择图片、发送数据
选在图片
第一步:创建图片选择控制器
UIImagePickerController *imagePk = [[UIImagePickerController alloc]init];
第二步:判断图库是否可以打开
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum]) {
第三步:设置打开图库的类型
imagePk.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
第四步:必须要实现两个代理方法
imagePk.delegate = self;
第五步:打开图片选择控制器,选择图片
[self presentViewController:imagePk animated:YES completion:nil];
代理方法:UINavigationControllerDelegate,UIImagePickerControllerDelegate
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
NSLog(@"%@",info);
imageV.image = info[UIImagePickerControllerOriginalImage];
}
链接蓝牙
第一步.创建选择其他蓝牙设备的控制器
GKPeerPickerController *peek = [[GKPeerPickerController alloc]init];
第二步.成为改控制器的代理]
peek.delegate = self;
第三步.显示蓝牙控制器GKPeerPickerControllerDelegate
[peek show];
实现如下方法
当蓝牙设备连接成功调用,picker触发事件控制器,peerID连接蓝牙设备的id,sesson连接蓝牙的绘话,只要拿到session就可以就可以传输数据
- (void)peerPickerController:(GKPeerPickerController *)picker didConnectPeer:(NSString *)peerID toSession:(GKSession *)session{
NSLog(@"----%@",peerID);
1.保存绘画
session = session;
//设置监听接受传递过来的数据
//Handler:谁来处理接受到的数据
// withContext传递数据
[session setDataReceiveHandler:self withContext:nil];
2.关闭显示蓝牙设备控制器
[picker dismiss];
}
在接受时必须要调用的方法,否则不知如何调用
data:传递过来的数据
peer:传递数据设备的id
session:会话
context:注册监听时传递的数据
- (void) receiveData:(NSData *)data fromPeer:(NSString *)peer inSession: (GKSession *)session context:(void *)context{
NSLog(@"%s",__func__);
}
- (void)peerPickerControllerDidCancel:(GKPeerPickerController *)picker{
}
发送数据
1.取出图片,转化为二进制,下面的是安全的模式
NSData *data = UIImagePNGRepresentation(imageV.image);
data就是需要发送的数据.DataReliable:是否安全的发送数据,error是否监听
[session sendDataToAllPeers:data withDataMode:GKSendDataReliable error:nil];