ios - 'isRunningInStoreDemoMode' 什么时候为真?

标签 ios iphone-privateapi kiosk-mode

我正在寻找一种在贸易展览会上展示应用程序的解决方案。

我知道您可以使用未记录的 com.apple.defaults.management 负载将配置文件安装到您的设备上,以禁用设备的主页按钮。这是在贸易展览上展示您的应用程序的好方法。但是,有时您的功能不应在此类节目中激活,或者在此演示模式期间不应将某些类型的数据存储在设备上。

由于您通过此 mobileconfig 文件启用的 key 是 SBStoreDemoAppLock 我认为这也会使私有(private) +[UIApplication isRunningInStoreDemoMode] 返回 YES但事实并非如此。有谁知道在什么情况下这个方法会返回YES?

我知道这是私有(private) API,但这是仅在测试版发行版中使用的代码,因此它并不重要。所以请不要评论告诉我我会被苹果拒绝!

感谢任何帮助!谢谢!

最佳答案

isRunningInStoreDemoMode

我查看了 UIKit。这个函数的作用是:

CFPreferencesGetAppBooleanValue("StoreDemoMode", "com.apple.demo-settings', &value);

我 grep 二进制文件,发现它被用在很多地方。但是,我没有找到任何设置它的代码。 (可能,我对此可能是错误的,因为我在这方面花费了很少的时间,并且我通过模拟器二进制文件进行 grep,这与真实设备二进制文件不同)。

此外,它无法通过 com.apple.defaults.management 进行设置(只能通过这种方式设置有限的设置集)。

所以,我的假设是这个 API 可能让人想起一些被替换/进化的旧 Kiosk 机制。

最简单的方法

我认为对您来说最简单的方法就是为演示构建一个特殊的版本,而不是试图找到一个区分 kiosk 模式和正常模式的私有(private) API

引导访问模式

如果你喜欢挑战。您可以查看新的信息亭模式机制 - 引导访问模式。

有两种方法可以启用它: a) 通过用户界面 ( https://www.appcertain.com/apple-guided-access-mode-parents/ ) b) 使用 Apple 配置 ( https://itunes.apple.com/us/app/apple-configurator/id434433123?mt=12 )

有一个库/usr/lib/libAccessibility.dylib。它有 API AXSGuidedAccessEnabled();我没有使用它,但我假设它会返回设备是否处于辅助功能模式。

关于ios - 'isRunningInStoreDemoMode' 什么时候为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16460640/

相关文章:

iphone - 在启动/引导时自动启动应用程序的首选方法?

iOS 触摸事件通知(私有(private) API)

android - 如何阻止 "holding the back button"在 Android 7+ 上转义 "Lock Task mode"

google-chrome-app - 非托管 Chromebox 上的自助服务终端模式?

ios - tvOS - 无法连接到本地主机

ios - Visual Studio 2015 Xamarin iOS 菜单已禁用

iphone - Xcode 调试控制台输出已更改

ios - 加载 View Controller 时如何滚动到特定的 UITableViewCell 顶部到 UITableView 顶部

ios - 从蓝牙 iBeacon 连接(私有(private) API)启动我的应用程序

java - 如何在 kiosk 模式/锁定任务模式下将安装程序包列入白名单?