2012-02-08 102 views
3

我发现程序化地开启和关闭蓝牙是iOS版本中的一个“私人api”,它会从苹果itunes商店中拒绝一个应用程序。iOS 5:以编程方式打开和关闭蓝牙

但是在iOS 5中,我知道以前不再私密的私人事物,比如通过编程来改变屏幕亮度。这样做不会让你的应用在iOS 5的iTunes中被拒绝,所以我想知道这些其他东西是否可以公开使用,比如蓝牙适配器。

+1

看看[这里] [1]问题 [1]:http://stackoverflow.com/questions/1743610/programmatically-turn-on-bluetooth-in-the-iphone- sdk – 2012-02-08 20:47:16

+0

我说ios 5,2009年不存在。 – CQM 2012-02-08 22:16:57

+2

对不起兄弟,我只是试图帮助 – 2012-02-08 22:58:30

回答

5

CoreBluetooth在iOS 5中公开可用。不幸的是,它仅适用于新的蓝牙LE(低能耗)设备。

请参阅CoreBluetooth Documentation

+2

此PDF为空白。 – whatchamacallit 2012-07-03 15:16:29

+1

它以前不是。 。试试https://developer.apple.com/library/ios/#documentation/CoreBluetooth/Reference/CoreBluetooth_Framework/_index。html – EricS 2012-07-03 15:59:18

+0

工作。我只是喜欢苹果如何移动东西。 – whatchamacallit 2012-07-03 17:47:10

1

没有,蓝牙还没有上市:(

+0

这将比回答更符合评论 – 2015-08-05 15:10:09

2

这是不公开,你会被拒绝。

+1

“公共”和“被拒绝”是两个不同的东西。如果有这样的API,那么它是公开的。 Apple可能会根据您的使用方式拒绝您的应用。 – whatchamacallit 2012-07-03 15:18:23

+1

@whatchamacallit:除了系统偏好设置没有API控制蓝牙是启用还是禁用。 EricS的PDF是关于如何在iOS 5中使用蓝牙LE,而不是如何打开/关闭蓝牙。 – 2012-07-03 19:17:28

2

我设法在运行OS 5.1的iPod上成功使用Private BluetoothManager API。

所以我会说它仍然有效。

我在这里提供了一个样本:http://www.pocketmagic.net/?p=2827,在文章的底部。 在那里,您不仅可以阅读关于打开或关闭蓝牙的更多信息,还可以阅读远程蓝牙设备,并将其列在用户界面中。

+2

我只是做了一个非常讨厌的发现。需要在主线程上运行setPowered和setEnabled调用。将调用放入viewDidLoad中,直到我将其包装到dispatch_get_main_queue的调度中后,才打开或关闭蓝牙 – xaxxon 2012-11-16 08:01:46

2

我需要以编程方式启用蓝牙。我所做的就是使用GKPeerPickerController,这会要求您在蓝牙未开启的情况下启用它。然后在GKPeerPickerControllerDelegate的调用中,我关闭了选取器。

不完美,你会在短时间内看到“搜索设备”,但它缺少另一种做法(据我所知)。

GKPeerPickerController * peerpicker = [[GKPeerPickerController alloc]init]; 
peerpicker.delegate = self; 
peerpicker.connectionTypesMask = GKPeerPickerConnectionTypeNearby; 
[peerpicker show]; 

当peerpicker准备好搜索时,有一个委托方法返回GKSession供picker使用。这是你解雇它的地方。

-(GKSession*)peerPickerController:(GKPeerPickerController *)picker sessionForConnectionType:(GKPeerPickerConnectionType)type 
{ 
    [picker dismiss]; 
    [picker autorelease]; 
    return nil; 
} 

而你的应用程序不会被拒绝。

相关问题