个人网站 备案 类型,wordpress不用公众号,番禺人才网地址,wordpress为什么那么卡蓝牙在GameKit框架中实现#xff0c;可以实现文件传递和游戏通信等#xff0c;蓝牙的缺点是不能得到文件传输的进度#xff0c;因此不宜传输大文件。 使用蓝牙的一般步骤如下#xff1a; ①创建蓝牙设备拾取器#xff0c;类似于图片拾取器#xff0c;通过代理方法获取拾取… 蓝牙在GameKit框架中实现可以实现文件传递和游戏通信等蓝牙的缺点是不能得到文件传输的进度因此不宜传输大文件。 使用蓝牙的一般步骤如下 ①创建蓝牙设备拾取器类似于图片拾取器通过代理方法获取拾取到的设备调用show方法来显示拾取器。 GKPeerPickerController *peerC [[GKPeerPickerController alloc] init];
peerC.delegate self;
[peerC show];要遵循UINavigationControllerDelegate,GKPeerPickerControllerDelegate协议。 ②通过代理方法获取拾取到的设备存储这个会话然后dismiss拾取器视图记得要存储会话注意为了接收数据应该调用会话的setDataReceiveHandler::方法 - (void)peerPickerController:(GKPeerPickerController *)picker didConnectPeer:(NSString *)peerID toSession:(GKSession *)session{_session session;// 设置谁来处理数据[session setDataReceiveHandler:self withContext:NULL];[picker dismiss];} 接收数据的方法既不是代理也不是通知因此必须和帮助文档中写的一样方法如下 - (void) receiveData:(NSData *)data fromPeer:(NSString *)peer inSession: (GKSession *)session context:(void *)context{// data就是接收到的二进制数据}③要发送蓝牙数据通过session的sendDataToAllPeers:::实现其中withDataMode用于选择是可靠传输还是不可靠传输类似TCP和UDP下面的代码演示了发送一张图片的过程。 - (IBAction)send:(id)sender {NSData *data UIImagePNGRepresentation(_imageView.image);NSError *err nil;// 可靠连接可以保证一定送到不可靠只负责发送[_session sendDataToAllPeers:data withDataMode:GKSendDataUnreliable error:err];if (err) {NSLog(%,err);}} 【实例】 下面的例子演示了一个发送图片的例程有一张图片imageView三个按钮分别是连接(connect方法)、选择(choosePic)、发送(send)点击选择从照片图库中选择一张图片点击连接建立会话点击发送将图片通过会话发送出去。 //
// ViewController.m
// 蓝牙基本使用
//
// Created by 11 on 7/27/15.
// Copyright (c) 2015 soulghost. All rights reserved.
//#import ViewController.h
#import GameKit/GameKit.hinterface ViewController () UIImagePickerControllerDelegate,UINavigationControllerDelegate,GKPeerPickerControllerDelegateproperty (weak, nonatomic) IBOutlet UIImageView *imageView;
property (weak, nonatomic) GKSession *session;endimplementation ViewController- (void)viewDidLoad {[super viewDidLoad];}- (IBAction)connect:(id)sender {// 创建蓝牙设备选择器View设置代理并且显示、GKPeerPickerController *peerC [[GKPeerPickerController alloc] init];peerC.delegate self;[peerC show];}
- (IBAction)choosePic:(id)sender {if(![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum]){NSLog(图库不可用);return;}UIImagePickerController *imgPickerC [[UIImagePickerController alloc] init];imgPickerC.delegate self;imgPickerC.sourceType UIImagePickerControllerSourceTypeSavedPhotosAlbum;[self presentViewController:imgPickerC animated:YES completion:nil];}
- (IBAction)send:(id)sender {NSData *data UIImagePNGRepresentation(_imageView.image);NSError *err nil;// 可靠连接可以保证一定送到不可靠只负责发送[_session sendDataToAllPeers:data withDataMode:GKSendDataUnreliable error:err];if (err) {NSLog(%,err);}}- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{//NSLog(%,info);UIImage *image info[UIImagePickerControllerOriginalImage];_imageView.image image;[self imagePickerControllerDidCancel:picker];}- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{[picker dismissViewControllerAnimated:YES completion:nil];
}- (void)peerPickerController:(GKPeerPickerController *)picker didConnectPeer:(NSString *)peerID toSession:(GKSession *)session{_session session;// 设置谁来处理数据[session setDataReceiveHandler:self withContext:NULL];[picker dismiss];}// 通过看setDataReceiveHandler的帮助得到只要实现了即可
// 接收到其他设备传来的数据时调用
- (void) receiveData:(NSData *)data fromPeer:(NSString *)peer inSession: (GKSession *)session context:(void *)context{UIImage *image [UIImage imageWithData:data];_imageView.image image;}end转载于:https://www.cnblogs.com/aiwz/p/6154102.html