2013-05-09 3 views
2

Я ищу решение для показа приложений на выставках.Когда задано значение isRunningInStoreDemoMode?

Я знаю, что вы можете установить профиль на свое устройство с недокументированной полезной нагрузкой com.apple.defaults.managed, чтобы отключить домашнюю кнопку устройства. Это хороший способ представить свое приложение на выставках. Однако иногда у вас есть функции, которые не должны активироваться на таких шоу, или какие-то данные не должны храниться на устройстве во время этого демонстрационного режима.

В качестве ключа, который вы разрешаете с помощью этого файла mobileconfig, является SBStoreDemoAppLock. Я думал, что это также сделает частный +[UIApplication isRunningInStoreDemoMode] return YES, но это не тот случай. Кто-нибудь знает, при каких обстоятельствах этот метод вернет ДА?

Я знаю, что это частный API, но это код, который предназначен только для бета-распространения, поэтому это не важно. Поэтому, пожалуйста, не комментируйте и не говорите мне, что я буду отвергнут яблоком!

Любая помощь приветствуется! Благодаря!

ответ

2

isRunningInStoreDemoMode

Я посмотрел в UIKit. Что она делает в этой функции:

CFPreferencesGetAppBooleanValue («StoreDemoMode», «com.apple.demo-настройка & значение);

Я Grep двоичные файлы и увидел, что он используется в довольно большом количестве но я не нашел никакого кода, где он установлен. (Потенциально, я мог ошибаться в этом, потому что я трачу на это довольно мало времени, и я встречаюсь в бинарных файлах Simulator, которые отличаются от реальных двоичных файлов устройства) .

Кроме того, он не может быть установлен через com.apple.defaults.managed (может быть установлен только ограниченный набор настроек).

Итак, я полагаю, что этот API может быть воспоминанием о каком-то старом механизме киоска, который был заменен/развит.

Простейшее путь

Я думаю, что самый простой способ для вас будет просто иметь специальную сборку для демо, вместо того, чтобы пытаться найти частного API, который будет отличать между режимом киоска и нормальным режимом

Режим управляемого доступа

Если вам нравятся проблемы. Вы можете взглянуть на новый механизм режима киоска - режим управляемого доступа.

Есть два способа включить его: а) через интерфейс (https://www.appcertain.com/apple-guided-access-mode-parents/) б) Использование Apple Configuration (https://itunes.apple.com/us/app/apple-configurator/id434433123?mt=12)

Там находится библиотека /usr/lib/libAccessibility.dylib. Он имеет API AXSGuidedAccessEnabled(); Я не использовал его, но я предполагаю, что он вернет, находится ли устройство в режиме доступности.