Подтвердить что ты не робот

Заблокировать приложение iOS в режиме одного приложения программно

Примечание. Я не хочу отправлять это приложение в магазин приложений.

Что я хочу достичь:

Я хочу простое приложение с одним видом, имеющим две кнопки Lock и Unlock.

Блокировка - эта кнопка блокирует устройство. Только на этом экране приложения показывается, что ничего другого не будет доступно даже после перезапуска. Кнопка "Главная", жесты будут отключены, как в режиме одного приложения.

Разблокировка - это разблокирует устройство и переключится на нормальное поведение устройства.

iOS: Я хочу это для iOS 4.3 и выше.

Я проверил следующие решения, но они не соответствуют моим требованиям

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

Спасибо заранее!

4b9b3361

Ответ 1

Как я знаю, в iOS 7 есть новая функция, которая позволяет делать именно то, что вы хотите. Однако он применим только для iOS 7 (и я считаю, что он применим только к контролируемым устройствам).

1) Вам нужно будет установить профиль конфигурации ограничения с помощью клавиши autonomousSingleAppModePermittedAppIDs (посмотрите здесь)

Это одноразовый шаг, и пользователю необходимо будет вручную принять этот профиль конфигурации.

Существует еще одна возможность использовать MDM для ее установки без проблем, но это может быть излишним для вас.

2) Вы должны использовать API:

UIAccessibilityRequestGuidedAccessSession (to lock/unlock)

Определяется здесь

3) И большая часть красоты. Все это официально документ. Таким образом, вы даже можете отправить его в AppStore.

P.S. Почему вы заботитесь о 4,3 или 5? К настоящему времени у них крошечная доля рынка. Скорее всего, даже iOS 6 уже имеет рыночную долю ниже 20%.

Обновление 1

Потенциально вы можете попробовать использовать API, который отправляет клики и ключи (поиск GSEvent в теге iPhone-privateapi). Может быть, с помощью этого API вы можете сделать тройной дом для включения и выключения доступа.

Если эта работа, я думаю, вы должны быть в состоянии обойти iOS 6. Я не уверен, были ли доступны оба этих API и тройной щелчок по дому.

Похоже, что этот частный API теперь недоступен в iOS 7. Возможно, вы можете игнорировать эту идею.

Ответ 2

В конфигурации MDM существует опция

  • autonomousSingleAppModePermittedAppIDs

    Дополнительно. Только под наблюдением. Если присутствует, разрешает приложения идентифицированные идентификаторами связки, перечисленными в массиве, к автономно входить в режим одного приложения. Доступность: доступна только в iOS 7.0 и новее.

    Но для этого требуется режим контролируемого устройства.

Ответ 3

Просто хотел написать об этом, даже если он старый, поскольку мне нужно было реализовать аналогичное решение, и я получил его работу. Шаги для меня следующим образом и примечание здесь состоит в том, что это включает MDM и другие конкретные шаги.

Мое требование было следующим. Каждый из iPad в разных местах имеет набор установленных приложений. Для удобства он позволяет предположить, что у каждого Dept. есть свои приложения. Участники открывают приложение, связанное с их отделом. чтобы провести тест, APP автоматически блокирует iPad в режиме одного приложения, и в конце теста он откроет его самостоятельно.

  • Наблюдайте за iPad/iphone с помощью Apple Configurator.
  • Установите файлы, связанные с MDM (у каждого MDM есть собственный набор инструкций, обычно это включает загрузку профиля).
  • У каждого MDM есть опция Single APP Mode или MultipleAppMode. Выберите второй вариант и добавьте идентификаторы приложений в список. (Один режим APP работает очень хорошо с MDM, но я не хотел, чтобы приложение было заблокировано на одном APP все время).
  • Я использовал UIAccessibilityRequestGuidedAccessSession api для блокировки разблокировки устройства в режиме одного приложения.

http://bobxcode.blogspot.com/2015/12/programmatically-implement-single-app.html

Спасибо, Боб