[蓝牙]iOS使用Private Framework开启蓝牙教

本文由论坛会员zhaoxy2850分享 有个项目需要研究非 ios 设备与ios设备的连接,之前了解到 苹果 的官方api是不支持这个操作的,于是便开始研究苹果的私有api。 在cc上也有很多帖子讨论过


有个项目需要研究非 ios设备与ios设备的连接,之前了解到 苹果的官方api是不支持这个操作的,于是便开始研究苹果的私有api。
[蓝牙]iOS使用Private Framework开启蓝牙教_第1张图片

在cc上也有很多帖子讨论过,但始终没什么实质性进展。
本人经过一番google,成功 使用私有api开启了 iphone的蓝牙。现在把方法 分享出来,希望能给大家提供一些思路。

1.首先在/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Library/PrivateFrameworks路径下找到BluetoothManager.framework(如果我没估计错的话,里面只有一个库 文件,没有头文件)
2.然后到http://iphone-dev.googlecode.com/svn/branches/include-1.2-sdk/include/BluetoothManager/上 下载所需的头文件,手动添加到BluetoothManager.framework中,并建立一个Headers文件夹。
3.建立一个工程将以上路径下的BluetoothManager.framework添加到工程中
4.将以下 代码添加到工程中。(注意:不需要引入BluetoothManager的头文件,否则会出现编译错误)

-(void)startBluetooth{
#if TARGET_IPHONE_SIMULATOR
    exit( EXIT_SUCCESS ) ;
#else
    /* this works in iOS 4.2.3 */
    Class BluetoothManager = objc_getClass( "BluetoothManager" ) ;
    id btCont = [BluetoothManager sharedInstance] ;
    [self performSelector:@selector(toggle:) withObject:btCont afterDelay:1.0f] ;
#endif
}

#if TARGET_IPHONE_SIMULATOR
#else
- (void)toggle:(id)btCont
{
    BOOL currentState = [btCont enabled] ;
    [btCont setEnabled:!currentState] ;
    [btCont setPowered:!currentState] ;

}
#endif

5.在真机上编译运行,会发现iphone的蓝牙成功开启。

但是,遗憾的是,目前我研究出来的只有开启蓝牙,关于设备匹配,数据传输方面没什么进展。
希望有人能再接再厉,在我的基础上研究出设备匹配和数据传输的方法,分享出来给大家~

顺便附上运行成功的工程文件和framework供大家参考~

BluetoothManager.framework

TestBluetooth


原帖地址:http://www.cocoachina.com/bbs/read.php?tid=77946

你可能感兴趣的:([蓝牙]iOS使用Private Framework开启蓝牙教)