iOS 蓝牙(GameKit)
来源:互联网 发布:fc2手机视频域名破解版 编辑:程序博客网 时间:2024/06/07 01:37
iOS中提供了4个框架用于实现蓝牙连接
GameKit.framework(用法简单)
只能用于iOS设备之间的连接,多用于游戏(比如五子棋对战),从iOS7开始过期MultipeerConnectivity.framework
只能用于iOS设备之间的连接,从iOS7开始引入ExternalAccessory.framework
可用于第三方蓝牙设备交互,但是蓝牙设备必须经过苹果MFi认证(国内较少)CoreBluetooth.framework(时下热门)
可用于第三方蓝牙设备交互,必须要支持蓝牙4.0
硬件至少是4s,系统至少是iOS6
蓝牙4.0以低功耗著称,一般也叫BLE(BluetoothLowEnergy)
目前应用比较多的案例:运动手坏、嵌入式设备、智能家居
代码实现
#import "ViewController.h"#import <GameKit/GameKit.h>@interface ViewController ()<GKPeerPickerControllerDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate>@property (strong, nonatomic) IBOutlet UIImageView *imageView;/** 会话 */@property (strong, nonatomic) GKSession *session;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad];}#pragma mark - 连接设备- (IBAction)connectDevice{ // 1.创建连接设备的控制器 GKPeerPickerController *ppc = [[GKPeerPickerController alloc] init]; // 2.设置代理(在代理中可以监听是否连接成功) ppc.delegate = self; // 3.弹出控制器 [ppc show];}/** * 当建立连接成功时,会调用该方法 * * @param picker 连接设备的控制器 * @param peerID 节点ID,每一个蓝牙设备就是一个节点,都有一个对应的节点ID * @param session 会话,建立连接之后相当于两个蓝牙之间建立一个会话,之后可以通过会话相互之间传输数据 */- (void)peerPickerController:(GKPeerPickerController *)picker didConnectPeer:(NSString *)peerID toSession:(GKSession *)session{ // 保留会话 self.session = session; // 设置句柄(谁来接收数据) [self.session setDataReceiveHandler:self withContext:nil]; // 退出控制器 [picker dismiss];}#pragma mark - 选择照片- (IBAction)pickImage{ // 1.判断照片源是否可用 if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]){ return; } // 2.创建照片选择控制器 UIImagePickerController *ipc = [[UIImagePickerController alloc] init]; // 3.设置代理 ipc.delegate = self; // 4.设置照片源 ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; // 5.弹出控制器 [self presentViewController:ipc animated:YES completion:nil];}/** * 选择了照片库的某一张照片 */- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { // 1.获取照片,并且设置到imageView上 self.imageView.image = info[UIImagePickerControllerOriginalImage]; // 2.退出控制器 [picker dismissViewControllerAnimated:YES completion:nil];}#pragma mark - 发送照片- (IBAction)sendImage { // 1.将图片转成NSData, 1 图片压缩比 NSData *imageData = UIImageJPEGRepresentation(self.imageView.image, 1); // 2.发送照片 /* GKSendDataReliable, 可到达,发送数据保证可以到达. GKSendDataUnreliable, 不可达到,数据只会发送一次. */ [self.session sendDataToAllPeers:imageData withDataMode:GKSendDataReliable error:nil];}/** * 接收数据必须要实现的方法 */- (void)receiveData:(NSData *)data fromPeer:(NSString *)peer inSession: (GKSession *)session context:(void *)context { // 1.直接转成Image,并且设置到ImageView self.imageView.image = [UIImage imageWithData:data];}
阅读全文
0 0
- GameKit iOS 蓝牙
- iOS 蓝牙(GameKit)
- iOS蓝牙开发 - GameKit框架
- 蓝牙(GameKit)
- GameKit 蓝牙
- ios 基于GameKit框架的蓝牙通信
- iOS- 蓝牙集成GameKit,MultipeerConnectivity,CoreBluetooth
- iOS开发 -GameKit蓝牙开发
- 使用GameKit实现IOS设备之间的蓝牙通信
- 使用GameKit实现iOS设备之间的蓝牙通信
- 使用GameKit实现IOS设备之间的蓝牙通信
- iOS之蓝牙简介和使用(一):GameKit
- Gamekit 多个iOS设备之间通过蓝牙4.0 通信、交互、游戏等文章的收集
- iOS GameKit蓝牙通信以及自定义cell的使用--实现仿微信聊天功能
- GameKit的蓝牙开发代码总结
- GameKit的蓝牙开发代码总结
- ios GameKit 实例(点对点通信)
- iOS - 蓝牙技术(一) - GameKit框架
- jquery双日历插件daterangepicker.js设置渲染位置parentEl
- 有趣的安全游戏--哈密顿行动(零)图灵测试
- oracle数据库的创建
- 命令行备忘录 cli-memo
- CentOs自带mysql卸载时出现无法卸载情况的解决办法
- iOS 蓝牙(GameKit)
- oracle11gR2 ASM添加和删除磁盘
- python 多线程 公用一个连接
- mui 返回上一页并刷新父页面列表
- Redis入门 – Jedis存储Java对象
- 调戏源码之Spring MVC(二)
- 【面向代码】学习 Deep Learning(一)Neural Network
- 如何为MyEclipse添加XML文档所使用的XML Schema
- C语言初步-第11讲:算术运算符与算术表达式(分离整数和小数部分)