我知道有很多的问题:“如何编程打开设置应用程序吗?” 答案是“大无”。 我知道,苹果不支持安装iOS 5.0之后,从任何其他应用程序打开的设置。
但也有一些应用程序,如MapMyFitness可以打开设置,他们是在App Store可用且已通过苹果公司。 MapMyFitness打开蓝牙设置,如果蓝牙处于关闭状态。 我已经在iOS 6中和iOS 5.1选中此。
我想知道这些应用程序怎么能是能够合法地打开设置,并绕过苹果的安全性,因为按我的信息有做它没有合法的方式?
我知道有很多的问题:“如何编程打开设置应用程序吗?” 答案是“大无”。 我知道,苹果不支持安装iOS 5.0之后,从任何其他应用程序打开的设置。
但也有一些应用程序,如MapMyFitness可以打开设置,他们是在App Store可用且已通过苹果公司。 MapMyFitness打开蓝牙设置,如果蓝牙处于关闭状态。 我已经在iOS 6中和iOS 5.1选中此。
我想知道这些应用程序怎么能是能够合法地打开设置,并绕过苹果的安全性,因为按我的信息有做它没有合法的方式?
应用程序无法打开设置应用到特定的屏幕。 所有应用像MapMyFitness开放的喜好的原因是因为他们要求使用蓝牙低能量的权限。 请求允许由管理CBCentralManager上首次使用。
这也是知道,如果蓝牙功能已开启或关闭类。 它将与一个选项,进入设置,打开蓝牙自动显示警告。
类似弹出窗口将使用位置服务时显示。
这些弹出由系统框架自动显示。 该消息可以使用自定义purpose
为定位服务属性,这是不可能在蓝牙的情况下。
用于此没有私有API,所以没有理由应用程序被拒绝。
那么,在iOS 5.0,还有的prefs://
URL方案。
从iOS的5.1,已删除。 它仍然可以使用私有API和混淆绕过二进制的静态分析。 例:
void (*openApp)(CFStringRef, Boolean);
void *hndl = dlopen("/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices");
openApp = dlsym(hndl, "SBSLaunchApplicationWithIdentifier");
openApp(CFSTR("com.apple.Preferences"), FALSE);
通过与琴弦演奏(分割和连接它们,等等),你最终可以使它的AppStore的。 它仍然不允许的,虽然。