2012-10-19 14 views
14

Voglio che dopo aver installato la mia app da un OTA il pulsante home del dispositivo non funzioni affatto in modo che l'utente non sia in grado di uscire dall'App. I miei scavi mi hanno portato ai seguenti risultatiDisabilita il tasto home senza riavviare il dispositivo

A) Ho un modo per disabilitare il pulsante di casa con un profilo "mobileconfig" ma è necessario riavviare il dispositivo e l'utente deve aprire la mia app subito dopo l'avvio, voglio farlo senza riavviare con qualcosa come i framework privati ​​su dispositivi non jail-broken. Voglio sapere che è possibile per dispositivi non-jail-break?

C) Se non è possibile disabilitare il pulsante home con Private Framework, esiste un modo per aprire un'app subito dopo l'avvio del dispositivo ?, dal momento che all'avvio vengono caricate app/processi di jailbreak.

[NOTA: Non voglio inviare il mio app di iTunes.]

+0

A chi è destinata questa app? Indipendentemente dall'app store, la disattivazione del pulsante Home farà sì che gli utenti ritengano che il loro dispositivo non funzioni correttamente. – occulus

+2

Ne abbiamo bisogno per la valutazione educativa. Pubblichiamo questa app con un certificato di distribuzione aziendale e il nostro profilo mobileconfig verrà disinstallato automaticamente una volta terminato l'esame. – GauravSTomar

+1

Possiamo farlo con Apple Configurator: Dispositivi supervisionati, ma causerà danni ai dati degli utenti. – GauravSTomar

risposta

19

In iOS6, c'è una funzione chiamata "Accesso Guidato", che permetterà ai proprietari di dispositivi di bloccare gli utenti (come i bambini e ragazzi delle scuole) in un'app.

Questo spiega the Guided Access for iOS 6 apps.

+2

Grazie per il tuo suggerimento, ma voglio fare lo stesso dalla mia app. L'accesso guidato non avrà ancora un'API o una struttura per usarlo dal codice. – GauravSTomar

+1

+1 per le informazioni preziose –

+0

cosa significa +25 – Rajneesh071

1

La risposta ufficiale a questa domanda è "non è possibile disattivare il pulsante home nei dispositivi ios è architettura a livello di sistema e non si è autorizzati a farlo".

È necessario scavare nel flusso del sistema operativo per apportare eventuali modifiche che potrebbero essere difficili da gestire.

bene, se si cambia la vista però che c'è una soluzione aperta e semplice per questo in iOS 6 noto come Accesso guidato.

+3

Possiamo farlo con un " mobileconfig ", ma è necessario riavviare il dispositivo e aprire l'app specificata subito dopo l'avvio. Non è una soluzione adeguata che vogliamo fare senza riavviare il sistema, cosa che ritengo sia possibile con Private Frameworks (Springboard, ecc.). – GauravSTomar

1

Se è possibile eseguire il jailbreak del dispositivo, creare un LaunchDaemon o utilizzarne uno esistente. LaunchDaemon è un file in formato plist che viene richiamato al riavvio e all'avvio del dispositivo. Avrete anche bisogno di un file chiamato open creato da K3A

Scarica open da here

Sarà necessario spostare open a/usr/bin/o si può mettere dentro la tua app fa autorizzazioni non importa, ma fissati a 0755 and root:wheel

Ora al LaunchDaemons, sono memorizzati qui

/System/Library/LaunchDaemons 

Ecco un esempio. Diciamo è il nome del LaunchDaemon

com.gauravstomar.test.plist 

Dove dice com.bundle.identifier mettere l'identificativo app si può anche trovare nel vostro Info.plist all'interno della directory apps in cui si dice CFBundleIdentifier

Ora all'interno del plist inserire il seguente informazioni

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>Label</key> 
    <string>com.gauravstomar.test</string> 
    <key>ProgramArguments</key> 
     <array> 
      <string>open</string> 
      <string>com.bundle.identifier</string> 
     </array> 
    <key>RunAtLoad</key> 
    <true/> 
     <key>StartInterval</key> 
     <integer>1</integer> 
</dict> 
</plist> 

etichetta deve essere lo stesso nome come il LaunchDaemon.plist escluso estensione plist

ProgramArguments è quello che chiama il file aperto e lancia l'applicazione

RunAtLoad rende questo lancio plist al riavvio

StartInterval farà il LaunchDaemon.plist aperto indietro fino dopo 1 secondo se l'utente esce l'applicazione, se l'utente è ancora nel nulla App successo

assicurarsi che le autorizzazioni per il tuo LaunchDaemon è impostato su

0644 root:wheel 

È ancora possibile utilizzare il tuo mobileconfig in modo che il pulsante home sia disabilitato. Una volta che la valutazione è stata completata è possibile disabilitare la LaunchDaemon in modo che l'applicazione si arresta in sé il rilancio con il seguente comando launchctl unload/System/Library/LaunchDaemon/com.gauravstomar.plist

Fatemi sapere se avete bisogno di più aiuto.

+0

Non vogliamo una soluzione JailBreak :( – GauravSTomar

+0

perché dobbiamo pubblicarlo ad hoc sul dispositivo degli utenti – GauravSTomar

0

Senza jailbreak, l'app è in modalità sandbox. L'app non ha semplicemente accesso al pasticcio con il tasto home. E davvero non dovresti scherzare con il tasto home.

Oltre a "Accesso guidato", è possibile anche utilizzare "Restrizioni", che consente di disabilitare tutto accettare l'apertura dell'app. Puoi disattivare app specifiche di Apple, tra cui Safari, e impedire agli utenti di installare app, eliminare app, fare acquisti, ecc ...

Abbiamo un numero di iPod touch con un'app di scansione dei biglietti che affittiamo ai nostri clienti. Facciamo uso di "Restrizioni" per disabilitare tutto oltre alla nostra app. La restrizione più utile finora è impedire alle persone di eliminare app. È incredibile quante persone elimineranno accidentalmente un'app, anche dopo il prompt di avviso.

+0

Se non sbaglio, lo avete reso possibile da un file di configurazione mobile? – GauravSTomar

+0

Abbiamo appena impostato manualmente da Impostazioni -> Generale -> Restrizioni – Luke

+0

Vogliamo farlo dalla nostra app. – GauravSTomar

Problemi correlati