如何在iPhone上以编程方式启用指导访问(Kiosk模式)?

如何在iPhone上自动执行引导访问模式? 我将需要自动启用和删除此function

背景 爱荷华州的这个应用程序使用iOS应用程序来显示您的驾驶执照。 问题是,将手机交给有关部门后,他们可以完全访问设备。

如果我有源代码或类似的应用程序,在切换出临时“Kiosk模式”时,如何才能要求input密码,以便照片,电子邮件或短信不能通过电话或(理想情况下)从USB。

我发现这个类似的Android解决scheme ,但现在正在寻找一个iOS解决scheme

您可以从您的应用程序中进入和退出指导访问模式。 但是,要这样做,必须监督设备,并安装MDMconfiguration文件,该应用程序的软件包ID位于可请求引导访问模式的应用程序列表中(密钥为autonomousSingleAppModePermittedAppIDs

一旦完成,进入导向访问你做到这一点:

 UIAccessibilityRequestGuidedAccessSession(true){ success in println("Request guided access success \(success)") } 

在iOS 7下

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

要使设备在Kiosk模式下工作,您可以使用Apple的指导访问 。 但是,您不能以编程方式启用它。 更多信息请点击这里


iOS 7和7+

您可以使用:

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

引用UIAccessibilityRequestGuidedAccessSession

UIAccessibilityRequestGuidedAccessSession

将应用程序asynchronous切换到单应用程序模式或从单应用程序模式切换。 宣言

迅速

func UIAccessibilityRequestGuidedAccessSession(_ enable:Bool,_ completionHandler:((Bool) – > Void)!)

Objective-C的

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

指定YES将设备置入单一应用程序模式,否则退出单一应用程序模式。

completionHandler

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

如果是,则应用程序成功转换到单一应用模式或从单一应用模式转换 如果否,则该应用程序或设备不适用于单一应用程序模式,或者存在其他错误。 讨论

您可以使用此方法将您的应用程序locking到单一应用程序模式,并稍后将其从该模式释放。 例如,testing应用程序可能会在testing开始时进入该模式,并在用户完成testing时退出。 进入单一应用程序模式仅支持使用移动设备pipe理(MDM)进行监督的设备,并且必须通过MDM为该模式启用应用程序本身。 您必须平衡每个呼叫,才能进入单一应用程序模式并通过呼叫退出该模式。

因为进入或退出单一应用程序模式可能需要一些时间,所以此方法asynchronous执行,并使用completionHandler块通知您结果。 导入声明

导入UIKit可用性

在iOS 7.0和更高版本中可用。

您也可以使用UIAccessibilityIsGuidedAccessEnabled来检查是否启用引导访问。

根据文档, 有两种方法可以使您的iOS应用程序以Kiosk模式运行。

configuration文件 :在移动设备pipe理(MDM)的帮助下,我们可以创build一个企业configuration文件,并使用任何MDM(例如众所周知的MobileIron)或借助任何iPhoneconfiguration实用程序将其推送到设备。 安装此configuration文件后,设备重启时启动的第一个应用程序将是唯一的应用程序,直到您重新启动设备。

指导访问(iOS 6及以上版本) :从iOS 6开始,我们可以使用两种方法来实现这一点,即指南访问和监督访问。 这两种方法都处理辅助function控制function,例如允许用户对其设备进行受限访问。 只有当我们能够完全访问设备时才能实现这一点。

我们可以在iOS 7中使用UIKit方法UIAccessibilityRequestGuidedAccessSession以编程方式实现在iOS应用程序中设置Kiosk模式。 根据苹果开发者文档,“UIAccessibilityRequestGuidedAccessSession将以asynchronous方式将应用程序转换为单应用程序模式或从单应用程序模式asynchronous转换”。

正如在苹果开发者文件中给出的:

 UIAccessibilityRequestGuidedAccessSession 

将应用程序asynchronous切换到单应用程序模式或从单应用程序模式切换。

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

参数

 enable 

指定YES将设备置入单一应用程序模式,否则退出单一应用程序模式。

 completionHandler 

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

 didSucceed 

如果是,则应用程序成功转换到单一应用模式或从单一应用模式转换 如果否,则该应用程序或设备不适用于单一应用程序模式,或者存在其他错误。 讨论您可以使用此方法将您的应用程序locking到单一应用程序模式,并在稍后将其从该模式释放。 例如,testing应用程序可能会在testing开始时进入该模式,并在用户完成testing时退出。 进入单一应用程序模式仅支持使用移动设备pipe理(MDM)进行监督的设备,并且必须通过MDM为该模式启用应用程序本身。 您必须平衡每个呼叫,才能进入单一应用程序模式并通过呼叫退出该模式。 因为进入或退出单一应用程序模式可能需要一些时间,所以此方法asynchronous执行,并使用completionHandlerblock将结果通知给您。

 Availability Available in iOS 7.0 and later. 

也可以看看

 UIAccessibilityIsGuidedAccessEnabled 

宣布在

 UIAccessibility.h 

从我的理解,这是不能使用代码完成的。 在非越狱的设备上,然后您将需要创build一个作为侦听器运行的守护进程。

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

更多关于指导访问的信息可以在这里find

这不能通过编程来完成。 “导向访问”是唯一的解决scheme。

请参考http://voice4uaac.com/tips/guided-access-ios6/查看截图。