#import "ViewController.h"
#import <GameKit/GameKit.h>
@interface ViewController ()<GKPeerPickerControllerDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate>
- (IBAction)ConnectAction:(id)sender;
- (IBAction)SendActio9n:(id)sender;
- (IBAction)Tap:(UITapGestureRecognizer *)sender;
@property (weak, nonatomic) IBOutlet UIImageView *Imageview;
@property (nonatomic ,strong)GKSession *session;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"%@",[UIDevice currentDevice]);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)ConnectAction:(id)sender {
//创建设备列表控制器
GKPeerPickerController *ppc = [[GKPeerPickerController alloc]init];
//设置代理
ppc.delegate = self;
[ppc show];
}
/**
*
*
* @param peerID 设备蓝牙的ID
* @param session 连接会话[通过session传输和接收数据]
*/
- (void)peerPickerController:(GKPeerPickerController *)picker didConnectPeer:(NSString *)peerID toSession:(GKSession *)session
{
[picker dismiss];
//保存session
self.session = session;
//处理接受的数据(接收到蓝牙设备传输的数据时就会调用self的receivedata:fromPeer:inSession:context:)
[self.session setDataReceiveHandler:self withContext:nil];
}
#warning mark - 接受到蓝牙设备被的传输数据,就会调用---
//此方法自己写的
- (void)receiveData:(NSData *)data fromPeer:(NSString *)peer inSession:(GKSession *)session context:(void *)context
{
self.Imageview.image = [UIImage imageNamed:data];
//写入相册
UIImageWriteToSavedPhotosAlbum(self.Imageview.image, nil, nil, nil);
}
- (IBAction)SendActio9n:(id)sender {
if (self.Imageview.image == nil)return;
//压缩图片数据
NSData *data = UIImagePNGRepresentation(self.Imageview.image);
//发送数据
[self.session sendDataToAllPeers:data withDataMode:GKSendDataReliable error:nil];
}
- (IBAction)Tap:(UITapGestureRecognizer *)sender {
if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
return;
}
//创建图片选择器
UIImagePickerController *ipc = [[UIImagePickerController alloc]init];
ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
//设置代理
ipc.delegate = self;
[self presentViewController:ipc animated:YES completion:nil];
}
//监控
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
//销毁图片选择控制器
[picker dismissViewControllerAnimated:YES completion:nil];
//显示图片
self.Imageview.image = info[UIImagePickerControllerOriginalImage];
}