最近簡單的瞭解了一下藍牙的使用,大致的步驟也就是連接設備,發送數據,接收數據
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設備之間的連接,只能用於同一個應用程序之間的連接,其實有關藍牙方面的知識比較多,操作起來還是挺複雜的,這裏只寫了很簡單的一些操作。