如何在iPhone上以编程方式启用Guided Access(Kiosk模式)?

时间:2014-12-15 16:25:40

标签: ios objective-c iphone xamarin privacy

问题

如何在iPhone上自动化Guided Access模式?我需要自动启用和删除此功能

背景 This application from the State of Iowa使用iOS应用来显示您的驾驶执照。问题是,在将手机交给当局后,他们可以完全访问该设备。

如果我有此代码或类似应用程序的源代码,在切换出临时“Kiosk模式”时如何需要密码,以便手机或手机无法提供照片,电子邮件或短信,或者(理想情况下)来自USB。

我发现这个类似solution for Android,但现在正在寻找iOS解决方案

5 个答案:

答案 0 :(得分:42)

您可以在应用内输入和退出指导访问模式。但是,要执行此操作,必须对设备进行监督,并安装MDM配置文件,该应用程序的应用程序包ID可以请求引导访问模式的应用程序列表(密钥为autonomousSingleAppModePermittedAppIDs

完成后,要输入指导访问权限,请执行以下操作:

UIAccessibility.requestGuidedAccessSession(true){
    success in
    print("Request guided access success \(success)")
}

答案 1 :(得分:8)

iOS 7以下

您无法以编程方式将iOS设备置于Kiosk模式,也无法在您的应用上执行任何操作以使其成为Kiosk应用程序(您无法以编程方式禁用主页按钮事件而无法获取事件在你的应用程序中)

要使设备在Kiosk模式下工作,您可以使用Apple的Guided Access。 但是您无法以编程方式启用它。有关详情,请查看here


iOS 7和7 +

您可以使用:

void UIAccessibilityRequestGuidedAccessSession(BOOL enable, void(^completionHandler)(BOOL didSucceed))

参考UIAccessibilityRequestGuidedAccessSession

<强> UIAccessibilityRequestGuidedAccessSession

将应用程序异步转换为Single App模式或从Single App模式转换。 声明

  

<强>夫特

     

func UIAccessibilityRequestGuidedAccessSession(_ enable:Bool,                                                _ completionHandler :((Bool) - &gt; Void)!)

     

<强>目标C

     

void UIAccessibilityRequestGuidedAccessSession(BOOL enable,void   (^ completionHandler)(BOOL didSucceed));参数启用

     

指定YES将设备置于此应用程序的单一应用程序模式或否   退出单一应用程序模式。

     

completionHandler

     

通知您的应用程序成功或失败的块   操作。该块采用以下参数:didSucceed

     

如果是,则应用程序成功转换到Single App模式或从Single App模式转换。   如果否,则应用或设备不符合单一应用模式或那里   是一些其他错误。讨论

     

您可以使用此方法将您的应用锁定为单一应用模式   稍后从该模式中释放它。例如,测试应用可能会   在测试开始时进入此模式,并在用户退出时   完成测试。仅支持进入单一应用程序模式   使用移动设备管理(MDM)监督的设备   MDM必须为此模式启用应用程序本身。你必须平衡   每次调用进入单一应用程序模式,调用退出该模式。

     

因为进入或退出单一应用程序模式可能需要一些时间,这个   方法异步执行并使用通知您结果   completionHandler块。进口声明

     

导入UIKit可用性

     

适用于iOS 7.0及更高版本。

此外,您可以使用UIAccessibilityIsGuidedAccessEnabled检查是否启用了Guided Access。

答案 2 :(得分:5)

根据文档,There are two ways of enabling your iOS app to run in kiosk mode.

配置文件:在移动设备管理(MDM)的帮助下,我们可以创建企业配置文件并使用任何MDM将其推送到设备,例如,众所周知的MobileIron或借助于任何iPhone配置工具。安装此配置文件后,重新启动设备时启动的第一个应用程序将是唯一一个将在您重新启动设备之前运行的应用程序。

引导访问(iOS 6及更高版本):从iOS 6开始,我们可以使用两种方法实现这一点,即Guide Access&amp;监督访问。这两种方法都涉及辅助功能控制功能,例如允许用户限制访问其设备。只有当我们拥有对设备的完全访问权限时,才能实现这一目标。

我们可以使用UIKit方法UIAccessibilityRequestGuidedAccessSession在iOS 7中以编程方式在iOS App中设置Kiosk模式。根据Apple开发人员文档,'UIAccessibilityRequestGuidedAccessSession将异步转换应用程序进出Single App模式'。

如苹果开发者文档中所述:

UIAccessibilityRequestGuidedAccessSession

以异步方式将应用程序转换为单一应用程序模式或从单一应用程序模式转换。

void UIAccessibilityRequestGuidedAccessSession(BOOL enable, void(^completionHandler)(BOOL didSucceed))

参数

enable

指定“是”将设备置于此应用程序的“单应用程序”模式,或选择“否”退出“单应用程序”模式。

completionHandler

通知您的应用程序操作成功或失败的块。该块采用以下参数:

didSucceed

如果是,则应用程序成功转换到Single App模式或从Single App模式转换。如果为“否”,则应用或设备不符合单一应用模式的条件,或者存在其他错误。 讨论 您可以使用此方法将应用程序锁定为单一应用程序模式,并在以后将其从该模式中释放。例如,测试应用程序可能会在测试开始时进入此模式,并在用户完成测试时退出。仅对使用移动设备管理(MDM)监督的设备支持进入单一应用程序模式,并且必须通过MDM为此模式启用应用程序本身。您必须平衡每个呼叫以进入单一应用程序模式,并调用退出该模式。 由于进入或退出单一应用程序模式可能需要一些时间,因此该方法异步执行并使用completionHandlerblock通知您结果。

Availability
Available in iOS 7.0 and later.

另见

UIAccessibilityIsGuidedAccessEnabled

声明

UIAccessibility.h

答案 3 :(得分:0)

据我所知,使用代码无法做到这一点。在非越狱设备上然后你需要创建一个作为监听器运行的守护进程。

您可以做的最接近的事情是在您的设备上设置“引导式访问”并将其链接到按下三重主页按钮。

有关引导式访问的更多信息,请访问here

答案 4 :(得分:-4)

这不能以编程方式完成。 “引导访问”是唯一的解决方案。

有关基于屏幕截图的示例,请参阅http://voice4uaac.com/tips/guided-access-ios6/