ios objective-c iphone-privateapi springboard

Bloquear la aplicación iOS en modo de aplicación única mediante programación



objective-c iphone-privateapi (3)

Nota: No quiero enviar esta aplicación a la tienda de aplicaciones.

Lo que quiero lograr:

Quiero una aplicación simple con una vista que tenga dos botones Bloquear y Desbloquear.

Bloquear : este botón bloqueará el dispositivo. Solo la pantalla de esta aplicación mostrará que no se podrá acceder a nada más, incluso después de que se reinicie, aparecerá la misma pantalla. Botón de inicio, los gestos se desactivarán de forma similar al modo de aplicación única.

Desbloquear : esto desbloqueará el dispositivo y cambiará al comportamiento normal del dispositivo.

iOS: quiero esto para iOS 4.3 y superior.

He comprobado las siguientes soluciones, pero estas no coinciden con mis requisitos

  1. Perfil de configuracion

    Bloquea el iPhone / iPod / iPad para que solo pueda ejecutar una aplicación

    Pero es manual (reiniciar dispositivo, abrir aplicación que desea ejecutar en modo de aplicación única). Quiero hacerlo programáticamente como lo mencioné anteriormente a través de mi aplicación.

  2. Acceso guiado (iOS 6 y superior)

    ¿Cómo bloquear al usuario en el modo de aplicación única en iOS 6, programáticamente?

    Quiero que lo haga para todos los sistemas operativos y programáticamente.

¿Hay alguna manera de hacer esto? Como no quiero enviarlo a la tienda de aplicaciones, ¿hay alguna API privada, algún hack para el trampolín para lograr esto?

Gracias por adelantado !!


Como sé en iOS 7, hay una nueva característica que le permite hacer exactamente lo que quiere. Sin embargo, solo es aplicable para iOS 7 (y creo que solo es aplicable a dispositivos supervisados).

1) Necesitará instalar el perfil de configuración de restricción con autonomousSingleAppModePermittedAppIDs clave autonomousSingleAppModePermittedAppIDs (eche un vistazo here )

Este es un paso único y el usuario deberá aceptar manualmente este perfil de configuración.

Hay otra opción para usar MDM para instalarlo en silencio, pero podría ser una exageración para usted.

2) Debes usar API:

UIAccessibilityRequestGuidedAccessSession (to lock/unlock)

Se define here

3) Y la mayor parte de la belleza. Todo esto es oficialmente documento. Por lo tanto, incluso puede enviarlo a AppStore.

PS ¿Por qué te preocupas por 4.3 o 5? Ellos tienen una pequeña cuota de mercado por ahora. Lo más probable es que incluso iOS 6 ya tiene una cuota de mercado inferior al 20%.

Actualización 1

Potencialmente, puedes intentar usar la API que envía clics y claves (busca GSEvent en la etiqueta iPhone-privateapi). Puede estar usando estas API que puede hacer triple inicio para activar y desactivar la accesibilidad.

Si esto funciona, creo que deberías poder cubrir iOS 6. No estoy seguro de si tanto esta API como el triple clic de inicio estuvieran disponibles antes de eso.

Parece que esta API privada ya no es accesible en iOS 7. Entonces, probablemente puedas ignorar esta idea.


En la configuración de MDM, hay una opción

  • autonomSingleAppModePermittedAppIDs

    Opcional. Sólo supervisado. Si está presente, permite que las aplicaciones identificadas por las ID de paquete enumeradas en la matriz ingresen de manera autónoma en el Modo de aplicación única. Disponibilidad: Disponible solo en iOS 7.0 y posteriores.

    Pero esto necesita el modo de dispositivo supervisado.


Solo quería escribir sobre esto, aunque esto es antiguo, ya que necesitaba implementar una solución similar y la puse en funcionamiento. Los siguientes pasos para mí y una nota aquí es que esto implica MDM y otros pasos específicos.

Mi requisito era el siguiente. Cada uno de los iPad en diferentes ubicaciones tiene un conjunto de aplicaciones instaladas. Para mayor facilidad, asumamos que cada Dept. tiene sus propias aplicaciones. Los participantes abren una aplicación relacionada con su departamento. Para realizar una prueba, la aplicación bloquea automáticamente el iPad en el modo de aplicación única y, al final de la prueba, se desbloqueará automáticamente.

  1. Supervisa el iPad / iphone usando el Configurador de Apple.
  2. Instale los archivos relacionados con MDM (cada MDM tiene su propio conjunto de instrucciones, generalmente implica la descarga de un perfil).
  3. Cada MDM tiene una opción de modo de aplicación individual o modo de aplicación múltiple. Seleccione la segunda opción y agregue los identificadores de la aplicación a la lista. (Un solo modo de APLICACIÓN funciona bastante bien con los MDM, pero no quería que la aplicación estuviera bloqueada en una única APLICACIÓN todo el tiempo).
  4. Utilicé la UIAccessibilityRequestGuidedAccessSession api para bloquear y desbloquear el dispositivo desde el modo de aplicación única.

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

Gracias bob