【问题标题】:When is 'isRunningInStoreDemoMode' true?'isRunningInStoreDemoMode' 何时为真?
【发布时间】:2013-05-03 20:41:12
【问题描述】:

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

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

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

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

感谢任何帮助!谢谢!

【问题讨论】:

    标签: ios iphone-privateapi kiosk-mode


    【解决方案1】:

    isRunningInStoreDemoMode

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

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

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

    另外,它不能通过 com.apple.defaults.managed 设置(只有有限的一组设置可以这样设置)。

    所以,我的假设是这个 API 可能是对一些旧的 Kiosk 机制的回忆,这些机制已经被替换/进化了。

    最简单的方法

    我认为对你来说最简单的方法就是为演示制作一个特殊的版本,而不是尝试找到一个可以区分信息亭模式和正常模式的私有 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();我没有使用它,但我认为它会返回设备是否处于可访问性模式。

    【讨论】:

      猜你喜欢
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      相关资源
      最近更新 更多