如何在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/查看截图。