【问题标题】:How can I programmatically enable Guided Access (Kiosk mode) on an iPhone?如何以编程方式在 iPhone 上启用引导式访问(Kiosk 模式)?
【发布时间】:2015-02-13 19:32:27
【问题描述】:

问题

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

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

如果我有此应用程序或类似应用程序的源代码,如何在退出临时“自助服务终端模式”时要求输入密码,以使手机无法使用照片、电子邮件或短信,或(理想情况下)来自 USB。

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

【问题讨论】:

  • @AaronBrager 已修复 - 谢谢!

标签: ios objective-c iphone xamarin privacy


【解决方案1】:

您可以在应用内进入和退出引导式访问模式。但是,要做到这一点,设备必须受到监督,并且安装了 MDM 配置文件,该配置文件在可以请求引导访问模式的应用程序列表中包含应用程序的捆绑 ID(密钥是 autonomousSingleAppModePermittedAppIDs

完成后,要进入引导式访问,请执行以下操作:

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

【讨论】:

  • 感谢指正。我以为我知道所有可访问性 API! :)
  • 直到一位同事告诉我最近的一个项目,我才听说过它。对于所有受监督的设备和 MDM 的东西,它有点晦涩......
  • @jrturon:监管限制可防止公司在 BYOD 上滥用这一点。 Apple 不希望每个人都能够在他们不拥有和管理的设备上执行此操作。
  • @Nobosi 是的,当然 - 我的意思是由于所有这些限制(我们绝对需要!),它并不是一种流行的技术。
  • @NuWin 否,但使用受监督的设备,您无需密码即可退出引导访问模式。
【解决方案2】:

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

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

引导访问(iOS 6 及以上):从 iOS 6 开始,我们可以使用引导访问和监督访问两种方法来实现这一点。这两种方法都处理辅助功能控制功能,例如允许用户限制访问他们的设备。这只有在我们拥有对设备的完全访问权限时才能实现。

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

在苹果开发者文档中给出:

UIAccessibilityRequestGuidedAccessSession

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

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

参数

enable

指定 YES 以将此应用程序置于单应用程序模式,或指定 NO 以退出单应用程序模式。

completionHandler

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

didSucceed

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

Availability
Available in iOS 7.0 and later.

另见

UIAccessibilityIsGuidedAccessEnabled

声明于

UIAccessibility.h

【讨论】:

    【解决方案3】:

    iOS 7 以下

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

    要使设备在 Kiosk 模式下工作,您可以使用 Apple 的 Guided Access。 但是您不能以编程方式启用它。更多信息请查看here


    iOS 7 和 7+

    你可以使用:

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

    参考UIAccessibilityRequestGuidedAccessSession

    UIAccessibilityRequestGuidedAccessSession

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

    斯威夫特

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

    Objective-C

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

    指定 YES 将设备置于此应用的单应用模式或 NO 退出单应用模式。

    completionHandler

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

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

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

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

    导入 UIKit 可用性

    适用于 iOS 7.0 及更高版本。

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

    【讨论】:

    • 您可以以编程方式执行此操作。看我的回答。
    • @jrturton: :) 欣赏它。
    【解决方案4】:

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

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

    【讨论】:

    • 可以。看我的回答。
    【解决方案5】:

    据我了解,这无法使用代码完成。在未越狱的设备上,您需要创建一个作为侦听器运行的守护进程。

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

    有关引导式访问的更多信息可以找到here

    【讨论】:

    • 谢谢。我更新了问题以专注于编程解决方案,也许是通过自动化引导访问
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 2020-12-23
    • 2018-05-09
    相关资源
    最近更新 更多