在iOS应用中使用CoreBluetooth

时间:2013-07-30 02:24:37

标签: ios core-bluetooth bluetooth-lowenergy

我是Xcode的新手,正在努力弄清楚如何使用coreBluetooth框架。

我正在尝试连接到BLE设备并与之交换数据。我已经经历了几个例子,但我很难理解一切。有没有人知道一个非常基本的例子,甚至是关于如何实现所有这些的逐步教程?

1 个答案:

答案 0 :(得分:1)

按照以下步骤使用蓝牙传输文件。

  1. 添加GameKit框架。
  2. 在.h文件中

    #import <GameKit/GameKit.h>
    
  3. 在.h文件中添加委托

    <GKPeerPickerControllerDelegate,GKSessionDelegate>
    
  4. 在.h文件中创建两个对象。

    GKSession *currentSession;
    GKPeerPickerController *picke;
    
  5. 在两侧运行此代码以连接(配对)设备。

    picker = [[GKPeerPickerController alloc] init];
    picker.delegate = self;
    picker.connectionTypesMask = GKPeerPickerConnectionTypeNearby;
    filePath = fullfilePath;
    [picker show];
    
  6. 当调用以下方法完成连接时。

    -(void)peerPickerController:(GKPeerPickerController *)pk 
         didConnectPeer:(NSString *)peerID 
         toSession:(GKSession *)session
    
  7. 编写以下代码以维护此方面的会话 方法

    currentSession = session;
    session.delegate = self;
    [session setDataReceiveHandler:self withContext:nil];
    picker.delegate = nil;
    [picker dismiss];
    
  8. 此代码将发送文件。

    if(filePath)
    {
        NSData *zipFileData = [NSData dataWithContentsOfFile:filePath];
        if(currentSession)
        {
            [currentSession sendDataToAllPeers:zipFileData 
                   withDataMode:GKSendDataReliable error:nil];
        }
    }
    
  9. 此方法将重新获取数据。字段NSData* data包含数据 发件人发送。你可以做任何事情。你可以解析显示 或者按照自己的意愿保存。

    - (void) receiveData:(NSData *)data fromPeer:(NSString *)peer 
                 inSession:(GKSession *)session context:(void *)context
    
  10. 以下两种方法有助于维持会话。

     -(void)session:(GKSession *)session peer:(NSString *)peerID 
               didChangeState:(GKPeerConnectionState)state
     {
         @try
         {
             int a = state;
             switch (a)
             {
                 case GKPeerStateConnected:
                     DDLogVerbose(@"connected");
                     break;
                 case GKPeerStateDisconnected:
                     DDLogVerbose(@"disconnected");
                     currentSession = nil;
                     break;
             }
         }@catch (NSException *exception)
         {
             DDLogError(@"Exception : %@", exception);
         }
     }
    
     -(void)session:(GKSession *)session didFailWithError:(NSError *)error
     {
         @try
         {
             DDLogError(@"%@", [error description]);
         }@catch (NSException *exception)
         {
             DDLogError(@"Exception : %@", exception);
         }
     }
    
  11. 注意:用NSLog替换DDLog语句。一切顺利。