我是Xcode的新手,正在努力弄清楚如何使用coreBluetooth框架。
我正在尝试连接到BLE设备并与之交换数据。我已经经历了几个例子,但我很难理解一切。有没有人知道一个非常基本的例子,甚至是关于如何实现所有这些的逐步教程?
答案 0 :(得分:1)
按照以下步骤使用蓝牙传输文件。
在.h文件中
#import <GameKit/GameKit.h>
在.h文件中添加委托
<GKPeerPickerControllerDelegate,GKSessionDelegate>
在.h文件中创建两个对象。
GKSession *currentSession;
GKPeerPickerController *picke;
在两侧运行此代码以连接(配对)设备。
picker = [[GKPeerPickerController alloc] init];
picker.delegate = self;
picker.connectionTypesMask = GKPeerPickerConnectionTypeNearby;
filePath = fullfilePath;
[picker show];
当调用以下方法完成连接时。
-(void)peerPickerController:(GKPeerPickerController *)pk
didConnectPeer:(NSString *)peerID
toSession:(GKSession *)session
编写以下代码以维护此方面的会话 方法
currentSession = session;
session.delegate = self;
[session setDataReceiveHandler:self withContext:nil];
picker.delegate = nil;
[picker dismiss];
此代码将发送文件。
if(filePath)
{
NSData *zipFileData = [NSData dataWithContentsOfFile:filePath];
if(currentSession)
{
[currentSession sendDataToAllPeers:zipFileData
withDataMode:GKSendDataReliable error:nil];
}
}
此方法将重新获取数据。字段NSData* data
包含数据
发件人发送。你可以做任何事情。你可以解析显示
或者按照自己的意愿保存。
- (void) receiveData:(NSData *)data fromPeer:(NSString *)peer
inSession:(GKSession *)session context:(void *)context
以下两种方法有助于维持会话。
-(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);
}
}
注意:用NSLog替换DDLog语句。一切顺利。