iOS蓝牙学习之GameKit

GameKit.framework(用法简单)只能用于iOS设备之间的连接,多用于游戏(比如五子棋对战),从iOS7开始过期。该Demo是从手机相册选取图片,传送到链接的设备,接收图片的设备将图片显示在屏幕,并保存到手机相册。

1.使用XIB布局

2.引入框架

#import  <Gamekit/Gamekit.h>

建立会话

@property(nonatomic,strong)GKSession *session;

3.建立链接button的方法(会弹出类似于Alert的对话框)

//创建一个附近设备搜索提示框

GKPeerPickerController *ppc = [[GKPeerPickerController alloc] init];

ppc.delegate = self;

[ppc show];

4.GKPeerPickerController将遵守代理协议GKPeerPickerControllerDelegate,该代理方法包含四个代理方法

//最常用的方法

//已经成功连接到某个设备,并且开启了链接会话

- (void)peerPickerController:(GKPeerPickerController *)picker//搜索框

didConnectPeer:(NSString *)peerID//连接的设备

toSession:(GKSession *)session//链接的会话:通过会话可以进行数据传输

{

//首先让弹框消失

[picker dismiss];

//标记会话

self.session = session;

//设置接受数据

//设置完接受者之后,接受数据会触发

[self.session setDataReceiveHandler:self withContext:nil];

}

5.在UIimageview上添加手势,点击调用手机相册,遵循UIImagePickerController的代理UIImagePickerControllerDelegate和UINavigationControllerDelegate方法(提供刷新数据及动画的方法)

//从相册中选择图片

- (IBAction)chooseImaFromLib:(id)sender {

//    判断是否支持相册选择

if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {

NSLog(@"没有相册");

return;

}

//创建选择图片的控制器

UIImagePickerController *ipc = [[UIImagePickerController alloc] init];

//设置图片来源

ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

//设置代理

ipc.delegate = self;

//modal出来

[self presentViewController:ipc animated:YES completion:nil];

}

//UIImagePickerController代理方法//选择图片完毕调用的方法

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary*)info{

[picker dismissViewControllerAnimated:YES completion:nil];

//让选择的图片显示,info

self.icon.image = info[UIImagePickerControllerOriginalImage];

}

6.发送数据button方法

- (IBAction)sendData:(id)sender {

//第一步先判断要发送的数据是否存在

if (!self.icon.image) {

return;

}

//发送数据

//    [self.session sendData:UIImagePNGRepresentation(self.icon.image)

//                  toPeers:self.session//通常传入已经连接的设备

//              withDataMode:(GKSendDataUnReliable)

//                    error:<#(NSError *__autoreleasing *)#>]

NSError *error  = nil;

BOOL sendState = [self.session sendDataToAllPeers:UIImagePNGRepresentation(self.icon.image)

withDataMode:(GKSendDataReliable)//可靠的传输方式:慢,不会丢包,知道传完  不可靠的传输方式:快,可能会丢包,传递的信息不一定完整

error:&error];

if (!sendState) {

NSLog(@"send error = %@",error.localizedDescription);

}

}

7.接收数据,显示在屏幕上,并保存至手机相册

-(void)receiveData:(NSData *)data//数据

fromPeer:(NSString *)peer//来自哪个设备

inSession:(GKSession *)session//链接会话

context:(void *)context{

//将数据直接显示在屏幕上

self.icon.image = [UIImage imageWithData:data];

//将数据存入相册

UIImageWriteToSavedPhotosAlbum(self.icon.image, nil, nil, nil);

}

总结:

为双方呈现一个GKPeerPickerController,提供了一个标准的用户界面连接两台设备

ViewControoler遵循GKPeerPickerControllerDelegate协议,处理来自GKPeerPickerController(对端选择器)的信息

建立连接后,使用GKSession类可以向对端设备发送数据

在receiveData:fromPeer:inSession:context代理方法中编写代码来处理接收到的数据

github上Demo地址:https://github.com/liuyan-yt/GameKItDemo.git

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容