iOS 蓝牙的简单使用
2016-05-10 10:43
357 查看
最近简单的了解了一下蓝牙的使用,大致的步骤也就是连接设备,发送数据,接收数据
1、首先导入头文件
2、设置会话属性,传输数据需要的会话层
3、遵守代理
4、首先连接设备
5、实现代理方法,做连接成功后的操作
6、发送数据
7、接收数据
8、需要注意的是,GameKit蓝牙只能用于iOS设备之间的连接,只能用于同一个应用程序之间的连接,其实有关蓝牙方面的知识比较多,操作起来还是挺复杂的,这里只写了很简单的一些操作。
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设备之间的连接,只能用于同一个应用程序之间的连接,其实有关蓝牙方面的知识比较多,操作起来还是挺复杂的,这里只写了很简单的一些操作。
相关文章推荐
- iOS动画编程-1
- iOS- 详解文本属性Attributes(转)
- 去除数组中重复的元素
- ios 4000 关于NSURLConnection
- iOS开发————通信方式之NSNotification
- iOS //清除本地缓存
- iOS7 edgesForExtendedLayout
- iOS socket编程(入门)
- IOS之绘图
- #include<iostream>和#include<iostream.h>的区别
- iOS - SDWebImage的原理以及使用流程
- ios 中角度问题
- iOS8推送消息的快速回复处理
- iOS--对plist文件进行读写,增删改查
- iOS设置某个界面允许横竖屏切换
- ios 打全局的Log日志
- iOS开发XCODE5 SVN配置 使用办法 (转) 收藏一下
- 在iOS App中实现地理位置定位的基本方法解析
- Code Sign error: ad hoc code signing not allowed with SDK 'iOS 9.3'
- iOS开发————通信方式之KVO