如何某些应用可以打开的应用程序中以编程方式设置应用程序(how some apps can open

2019-07-18 22:31发布

我知道有很多的问题:“如何编程打开设置应用程序吗?” 答案是“大无”。 我知道,苹果不支持安装iOS 5.0之后,从任何其他应用程序打开的设置。

但也有一些应用程序,如MapMyFitness可以打开设置,他们是在App Store可用且已通过苹果公司。 MapMyFitness打开蓝牙设置,如果蓝牙处于关闭状态。 我已经在iOS 6中和iOS 5.1选中此。

我想知道这些应用程序怎么能是能够合法地打开设置,并绕过苹果的安全性,因为按我的信息有做它没有合法的方式?

Answer 1:

应用程序无法打开设置应用到特定的屏幕。 所有应用像MapMyFitness开放的喜好的原因是因为他们要求使用蓝牙低能量的权限。 请求允许由管理CBCentralManager上首次使用。

这也是知道,如果蓝牙功能已开启或关闭类。 它将与一个选项,进入设置,打开蓝牙自动显示警告。

类似弹出窗口将使用位置服务时显示。

这些弹出由系统框架自动显示。 该消息可以使用自定义purpose为定位服务属性,这是不可能在蓝牙的情况下。

用于此没有私有API,所以没有理由应用程序被拒绝。



Answer 2:

那么,在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的。 它仍然不允许的,虽然。



文章来源: how some apps can open setting app programmatically within their app