你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS之藍牙簡介和運用(一):GameKit

iOS之藍牙簡介和運用(一):GameKit

編輯:IOS開發綜合

藍牙 GameKit 簡介: * 完成藍牙設備之間的通訊 * 只能運用在IOS設備之間同一個使用內銜接 * 從IOS7開端過時了 * 但是GameKit是最根本的藍牙通訊框架 * 經過藍牙可以完成文件的共享(僅限設備沙盒中的文件) * 此框架普通用於游戲開發(比方五子棋對戰) 開端案例 簡介: * 運用藍牙將兩個IOS設備銜接起來 * 搜索對方的設備 * 完成將手機中的圖片發送給對方 界面的搭建: 藍牙互連: 搜索藍牙設備
    // 初始化鏈接藍牙控制器
    GKPeerPickerController *peerCtr = [[GKPeerPickerController alloc]init];
    // 顯示婚配到的藍牙設備
    [peerCtr show];
GKPeerPickerController最重要的兩個代理
/**
 *  鏈接成功
 *
 *  @param picker  藍牙控制器
 *  @param peerID  銜接藍牙的設備id
 *  @param session 銜接藍牙的會話(通訊)用來傳數據
 */
- (void)peerPickerController:(GKPeerPickerController *)picker didConnectPeer:(NSString *)peerID toSession:(GKSession *)session
{
    NSLog(@"%s %d",__func__,__LINE__);
    // 隱藏藍牙控制器
    [picker dismiss];
}

// 加入銜接
- (void)peerPickerControllerDidCancel:(GKPeerPickerController *)picker
{
    NSLog(@"%s %d",__func__,__LINE__);
}
選擇圖片: 選擇圖片辦法
// 選擇圖片
- (IBAction)chooseImage {
    // 1.初始化圖片選擇控制器
    UIImagePickerController *imgPicker = [[UIImagePickerController alloc]init];
    // 2.判別圖庫能否可用
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum]) {
        // 3.設置圖庫翻開的類型
        imgPicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
        // 4. 設置代理
        imgPicker.delegate = self;
        // 5. 翻開圖庫
        [self presentViewController:imgPicker animated:YES completion:nil];
    }
}
選擇圖片控制器的代理辦法
/**
 *  圖片選擇完成調用
 *
 *  @param picker 圖片選擇控制器
 *  @param info   選擇的信息
 */
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
    NSLog(@"info == %@",info);
    // 設置選擇的圖片為以後的顯示圖片
    self.showImageView.image = info[UIImagePickerControllerOriginalImage];
    // 隱藏以後選擇圖片控制器
    [picker dismissViewControllerAnimated:YES completion:nil];
}
圖片互相發送: 需求在銜接成功代理辦法中存儲以後的會話
// 保管以後回話
    self.m_Session = session;
發送圖片辦法
// 發送圖片
- (IBAction)sendImage {

    // 拿到需求發送出去的圖片
    UIImage *image = self.showImageView.image;
    // 將圖片轉換成NSData類型
    NSData *imgData = UIImagePNGRepresentation(image);

    /**
     *  發送數據給一切婚配上的用戶
     *
     *  @param GKSendDataMode 數據發送的形式:(平安/不平安形式)
     *                        GKSendDataUnreliable : 不平安形式:好像發10個傳單,傳單直接往人群中砸過來,能不能收到不論
     *                        GKSendDataReliable:平安形式:好像發10個傳單,每一個傳單都得發到路人的手上,才再發下一個傳單
     *  @return
     */
    [self.m_Session sendDataToAllPeers:imgData withDataMode:GKSendDataUnreliable error:nil];
}
設置圖片:

GameKit提供的承受數據是辦法的回調

需求監聽接納傳遞過去的數據
在銜接成功代理辦法中設置監聽

    /** 監聽傳遞過去的數據
     *  setDataReceiveHandler: 由哪個對象來監聽數據的承受
     *  withContext : 監聽需求傳遞的參數
     */
    [session setDataReceiveHandler:self withContext:nil];

完成監聽辦法

只設置由誰監聽傳遞過去的數據還是缺乏的,由於我們還是不能拿到傳遞過去的數據,進入監聽辦法的頭文件可以看到
    // SEL = -receiveData:fromPeer:inSession:context:
所以我們必需完成這個辦法才干拿到接納到的數據,這個回調辦法辦法在Xcode 7之前的版本的解釋如圖:
iOS之藍牙簡介和使用(一):GameKit
/**
 *  完成接納數據的回調辦法
 *
 *  @param data    接納到的數據
 *  @param peer    傳遞數據的設備ID
 *  @param session 以後回話
 *  @param context 注冊監聽傳遞過去的數據
 */
- (void) receiveData:(NSData *)data fromPeer:(NSString *)peer inSession: (GKSession *)session context:(void *)context
{
    // 由於傳遞過去的是圖片,所以我們直接運用UIImage來承受
    UIImage *image = [UIImage imageWithData:data];
    // 設置圖片
    self.showImageView.image = image;
}

【iOS之藍牙簡介和運用(一):GameKit】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved