BluetoothManager无法在iOS 7上运行

时间:2013-11-08 12:04:41

标签: ios iphone bluetooth ios7 iphone-privateapi

我正在尝试在iOS 7的应用程序中使用BluetoothManager,但它似乎没有用。

在蓝牙管理器上调用setEnabled:setPowered:没有任何效果,我正在注册通知(BluetoothAvailabilityChangedNotification),但这些通知永远不会发送。

我已经导入了框架,并且我正在使用这些问题给出的示例代码,但这些都是iOS 7之前的版本,这可能是问题所在;

iOS BluetoothManager Framwork
iOS: Can't get BluetoothManager to work
Programmatically turn on bluetooth in the iphone sdk?

2 个答案:

答案 0 :(得分:2)

事实证明,此框架在iOS 7中尚未受到保护,仍可供使用。

我认为问题在于BluetoothManager.h和BluetoothDevice.h头文件的位置。它们需要位于以下目录中: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/PrivateFrameworks/BluetoothManager.framework/Headers

项目的“框架搜索路径”构建设置需要包含$(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks才能使用这些文件。

我不确定为什么会这样 - 在Xcode项目中使用头文件仍然返回[BluetoothManager sharedInstance]的有效(?)对象,但根本没有提供任何其他功能。至少现在它有效,耶!

哦,我应该提一下我是怎么发现这个的! michaeldorner's "BeeTee" github project几乎是为iOS 7设计的基本BluetoothManager示例项目。自述文件描述了头文件的位置,除了它只是他的项目中的构建设置,以便能够使用这些头文件。

答案 1 :(得分:1)

我没有足够的回复评论,但我想补充一些关于这个问题的更多信息。我发现上面的解决方案甚至是在OP中链接的原始解决方案都适用于XCode在我的iPhone 5s上构建armv7, armv7S, and arm64时。

但是,如果将构建设置更改为仅为标准体系结构(armv7,armv7s)构建,则产品将构建,但对setEnabledsetPowered的调用将不会像OP提到的那样产生影响。