您的位置:首页 > 移动开发 > IOS开发

iOS使用privateframework(私有api)开启蓝牙教程

2013-08-10 13:53 447 查看
有个项目需要研究非ios设备与ios设备的连接,之前了解到苹果的官方api是不支持这个操作的,于是便开始研究苹果的私有api。
在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供大家参考~ 

个人博客:http://blog.csdn.net/zhaoxy2850

本文地址:http://blog.csdn.net/zhaoxy2850/article/details/9876119

转载请注明出处,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息