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設備之間的連接,只能用於同一個應用程序之間的連接,其實有關藍牙方面的知識比較多,操作起來還是挺複雜的,這裏只寫了很簡單的一些操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章