以编程方式在单一应用模式下锁定iOS应用

Adi*_*ane 20 objective-c iphone-privateapi ios springboard

注意:我不想将此应用提交到应用商店.

我想要实现的目标:

我希望简单的应用程序有一个视图有两个按钮锁定和解锁.

锁定 - 此按钮将锁定设备.只有这个应用程序的屏幕显示即使重新启动相同的屏幕将显示其他任何东西都将无法访问.主页按钮,手势将被禁用类似于单一应用程序模式.

解锁 - 这将解锁设备并切换到设备的正常行为.

iOS: 我希望这适用于iOS 4.3及更高版本.

我检查了以下解决方案,但这些不符合我的要求

  1. 配置文件

    锁定iPhone/iPod/iPad,因此它只能运行一个应用程序

    但它是手动的(重启设备,打开应用程序,您想在单应用程序模式下运行).我想通过我的应用程序以上述方式以编程方式执行此操作.

  2. 引导访问(iOS 6及更高版本)

    如何以编程方式将用户锁定到iOS 6中的单一应用程序模式?

    我希望它能为所有操作系统和编程实现.

有没有办法做到这一点?因为我不想将它提交到应用商店是否有任何私人api,一些hack跳板实现这一点?

提前致谢 !!

Vic*_*nin 22

正如我在iOS 7中所知,有一项新功能可以让你完全按照自己的意愿行事.但是,它仅适用于iOS 7(我相信它仅适用于受监督的设备).

1)您需要使用autonomousSingleAppModePermittedAppIDs密钥安装限制配置文件(在这里查看)

这是一个步骤,用户需要手动接受此配置文件.

还有另一种方法可以使用MDM以静默方式安装它,但它可能对你来说太过分了.

2)你应该使用API​​:

UIAccessibilityRequestGuidedAccessSession (to lock/unlock)
Run Code Online (Sandbox Code Playgroud)

在这里定义

3)和大多数美化部分.所有这些都是官方文件.因此,您甚至可以将其提交给AppStore.

PS你为什么关心4.3或5?他们现在的市场份额很小.最有可能的是iOS 6的市场份额已经低于20%.

更新1

潜在地,您可以尝试使用发送点击和密钥的API(在iPhone-privateapi标记中搜索GSEvent).可以使用这些API,你可以做三重家庭来打开和关闭可访问性.

如果这项工作,我认为你应该能够涵盖iOS 6.我不确定此API和三次主页点击是否可用.

看起来这个私有API在iOS 7中不再可用.所以,可能你可以忽略这个想法.