ios - 以编程方式在单个应用程序模式下锁定 iOS 应用程序

标签 ios objective-c iphone-privateapi springboard

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

我想要实现的目标:

我想要一个简单的应用程序,一个 View 有两个按钮锁定和解锁。

锁定 - 此按钮将锁定设备。只有这个应用程序的屏幕不会显示任何其他内容,即使在重新启动后也会显示相同的屏幕。主页按钮,手势将被禁用,类似于单应用模式。

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

iOS : 我想要这个适用于 iOS 4.3 及更高版本。

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

  1. 配置文件

    Lock-down iPhone/iPod/iPad so it can only run one app

    但它是手动的(重启设备,打开您要在单应用模式下运行的应用)。我想通过我的应用程序按照我上面提到的方式以编程方式进行。

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

    How to lock down user to Single App mode in iOS 6, Programmatically?

    我希望它以编程方式适用于所有操作系统。

有什么办法吗?因为我不想将它提交到应用程序商店,是否有任何私有(private) api,跳板的一些 hack 来实现这一点?

提前致谢!!

最佳答案

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

1) 您需要使用 autonomousSingleAppModePermittedAppIDs 键安装限制配置文件(查看 here)

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

还有另一种选择可以使用 MDM 静默安装它,但这对您来说可能有点矫枉过正。

2) 你应该使用 API:

UIAccessibilityRequestGuidedAccessSession (to lock/unlock)

定义here

3) 和最美的部分。所有这些都是正式文件。因此,您甚至可以将其提交到 AppStore。

附言你为什么关心 4.3 或 5?他们现在的市场份额很小。很有可能甚至 iOS 6 的市场份额也不足 20%。

更新 1

您可以尝试使用发送点击和键的 API(在 iPhone-privateapi 标签中搜索 GSEvent)。可能正在使用这些 API,您可以执行 triple home 来打开和关闭辅助功能。

如果这项工作可行,我认为您应该能够覆盖 iOS 6。我不确定在此之前是否可以使用此 API 和三次主屏幕点击。

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

关于ios - 以编程方式在单个应用程序模式下锁定 iOS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20285136/

相关文章:

ios - NSMutableArray arrayWithCapacity 问题

ios - 文件在文档目录中保留多长时间(iOS)

ios - IOHIDEventSystemClientScheduleWithRunLoop 与 EXC_BAD_ACCESS

ios - 在当前线程上执行 Parse.com 用户注册 (signUp :) and retrieving the NSError

iOS Firebase Facebook 因 URL 错误而失败

iphone - 如何在 iPhone 应用程序中仅缩放图像的特定部分?

objective-c - 需要一个使用字典的随机单词生成器

objective-c - 如何处理在 Obj C 或 Swift 中返回对象或 nil 的 Core Data 自定义方法

objective-c - iOS 私有(private)框架

iOS 设备开/关通知