zoukankan      html  css  js  c++  java
  • iphone:蓝牙传输

    使用的是GameKit的框架

    遵循协议:<GKPeerPickerControllerDelegate,GKSessionDelegate>

    @property (strong, nonatomic) GKSession *currentSession;

    @property (strong, nonatomic) GKPeerPickerController *picker;

    连接时

        picker =[[GKPeerPickerController alloc] init];
        picker.delegate = self;
        picker.connectionTypesMask = GKPeerPickerConnectionTypeNearby;//设置成蓝牙的选择(另外一种是ONline的)    
        [picker show];

    断开连接

        [self.currentSession disconnectFromAllPeers];
        currentSession = nil;

    发送

        NSData *data;
        NSString *str = [NSString stringWithString:textField.text];
        data = [str dataUsingEncoding:NSASCIIStringEncoding];
        
        if (currentSession) {
            [self.currentSession sendDataToAllPeers:data withDataMode:GKSendDataReliable error:nil];
        }

    委托方法:

    #pragma mark  - Delegate
    //设备连接时
    - (void) peerPickerController:(GKPeerPickerController *)picker didConnectPeer:(NSString *)peerID toSession:(GKSession *)session{
        self.currentSession =session;//取得session对象
        session.delegate = self;
        [session setDataReceiveHandler:self withContext:nil];
        picker.delegate = nil;
        [picker dismiss];
    }
    //取消蓝牙选择器
    -(void) peerPickerControllerDidCancel:(GKPeerPickerController *)picker{
        picker.delegate = nil;
    }
    //设备断开连接
    - (void) session:(GKSession *)session peer:(NSString *)peerID didChangeState:(GKPeerConnectionState)state{
        switch (state) {
            case GKPeerStateConnected:
                NSLog(@"connected");
                break;
            case GKPeerStateDisconnected:
                NSLog(@"disconnected");
                currentSession = nil;
            default:
                break;
        }
    }
    //接受数据
    - (void) receiveData:(NSData *)data fromPeer:(NSString *)peer inSession: (GKSession *)session context:(void *)context
    {
        NSString *str;
        str = [[NSString alloc]initWithData:data encoding:NSASCIIStringEncoding];
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Data received" message:str delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
        [alert show];
    }

     

       


    作者:老Zhan
    出处:http://www.cnblogs.com/mybkn/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

     
  • 相关阅读:
    算法竞赛入门经典第一章习题解答
    程序实现求int类型和double类型的最大最小值范围
    程序实现求int类型和double类型的最大最小值范围
    程序实现求int类型和double类型的最大最小值范围
    程序实现求int类型和double类型的最大最小值范围
    机器狗组装费用 南邮NOJ 1076 优先权队列
    【HDOJ】2604 Queuing
    【HDOJ】1208 Pascal's Travels
    【HDOJ】4857 逃生
    【HDOJ】2510 符号三角形
  • 原文地址:https://www.cnblogs.com/mybkn/p/2631370.html
Copyright © 2011-2022 走看看