我正在寻找一种在贸易展览会上展示应用程序的解决方案。
我知道您可以使用未记录的 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/