- (IBAction)buildConnect:(id)sender { // 创建弹窗 GKPeerPickerController *ppc = [[GKPeerPickerController alloc] init]; // 设置代理 @interface ViewController () <GKPeerPickerControllerDelegate> ppc.delegate = self; // 展示 [ppc show]; }
#pragma mark -GKPeerPickerControllerDelegate // 连接成功就会调用 - (void)peerPickerController:(GKPeerPickerController *)picker // 弹窗 didConnectPeer:(NSString *)peerID // 连接到的蓝牙设备号 toSession:(GKSession *)session // 连接会话(通过它进行数据交互) { NSLog(@"%s, line = %d", __FUNCTION__, __LINE__); // 弹窗消失 [picker dismiss]; }
peerPickerController:didConnectPeer:didConnectPeer:
的方法中保存session会话@property (nonatomic, strong) GKSession *session; /**< 蓝牙连接会话 */ // 连接成功就会调用 - (void)peerPickerController:(GKPeerPickerController *)picker // 弹窗 didConnectPeer:(NSString *)peerID // 连接到的蓝牙设备号 toSession:(GKSession *)session // 连接会话(通过它进行数据交互) { NSLog(@"%s, line = %d", __FUNCTION__, __LINE__); // 弹窗消失 [picker dismiss]; // 保存会话 self.session = session; }
// 发送数据 - (IBAction)sendData:(id)sender { if (self.imageView.image == nil) return; // 有图片才继续执行 // 通过蓝牙链接会话发送数据到所有设备 [self.session sendDataToAllPeers:UIImagePNGRepresentation(self.imageView.image) // 数据 withDataMode:GKSendDataReliable // 枚举:发完为止 error:nil]; }
// 连接成功就会调用 - (void)peerPickerController:(GKPeerPickerController *)picker // 弹窗 didConnectPeer:(NSString *)peerID // 连接到的蓝牙设备号 toSession:(GKSession *)session // 连接会话(通过它进行数据交互) { NSLog(@"%s, line = %d", __FUNCTION__, __LINE__); // 弹窗消失 [picker dismiss]; // 保存会话 self.session = session; // 处理接收到的数据[蓝牙设备接收到数据时,就会调用 [self receiveData:fromPeer:inSession:context:]] // 设置数据接受者为:self [self.session setDataReceiveHandler:self withContext:nil]; } #pragma mark - 蓝牙设备接收到数据时,就会调用 - (void)receiveData:(NSData *)data // 数据 fromPeer:(NSString *)peer // 来自哪个设备 inSession:(GKSession *)session // 连接会话 context:(void *)context { NSLog(@"%s, line = %d", __FUNCTION__, __LINE__); // 显示 self.imageView.image = [UIImage imageWithData:data]; // 写入相册 UIImageWriteToSavedPhotosAlbum(self.imageView.image, nil, nil, nil); }
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句