我同意这个问题是重复的。请多多包涵。我也是你们中的一员,相信不可能以编程方式打开/关闭蓝牙。
但是使用GKPeerPickerController
如果蓝牙未打开,系统将提示用户将其打开。足够公平打开蓝牙。
我坚信我们不能以编程方式关闭蓝牙,因为没有办法。但是this application这样做让我没有选择拒绝。
我只是想确认是否可能,如果可以,如何使用GKPeerPickerController
或任何其他公共(public)API方式关闭蓝牙?
最佳答案
我知道这不是您想要的答案,但是不,您无法使用 Apple 批准的 API 以编程方式关闭蓝牙。
已经有很多应用程序approved on the App Store this year that have done this .
但是,一旦他们(苹果)意识到发生了什么事,它们就会在发布后不久被苹果删除。他们肯定使用私有(private) API。
要么开发者愚蠢地认为他们不会被注意到,要么他们只是希望在苹果下架应用程序之前获得几周的收入,这可能足以偿还他们的成本,并获得一些利润.
问题在于,有多种方法可以检查应用是否正在使用私有(private) API。如果开发人员以正常方式使用 Objective-C 框架,那么检查就很简单。事实上,Xcode does some of this automatically当您使用它将应用程序二进制文件上传到 iTunes Connect 时。但是,这不是一个完整的检查。到达 Apple 后,审核人员会执行另一项检查,我已经推断出该检查比 Xcode 所做的更为复杂。
但是,该检查仍然不完美,我认为这不一定是懒惰的审核者忘记执行检查的问题。 Objective-C 为您提供了一些技巧 obfuscating方法调用。根据您如何使用这些技术,您可能能够通过审阅者。根据我的经验,我有充分的理由(眨眼,眨眼)相信苹果并没有在完全检测的 iOS 版本上运行每个应用程序,这可以记录所有函数调用,甚至击败最好的尝试通过混淆技术隐藏私有(private) API 的使用。
所以,我几乎可以向您保证,这解释了您在 App Store 中找到的关闭蓝牙的应用程序。公共(public) GameKit API 允许您打开蓝牙,但不能关闭蓝牙。
免责声明:我从未在苹果工作过,也没有苹果内部人士向我提供信息。但是,我已经通过审核流程获得了私有(private) API。
关于iPhone 关闭蓝牙 GKPeerPickerController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11102216/