2015-10-28 15 views

risposta

16

UPDATE

Come altri utenti hanno sottolineato, questa soluzione non funziona più con iOS10. Se qualcuno ha un'idea su come farlo funzionare su iOS10, faccelo sapere.

Soluzione per iOS < 10:

per aprire le impostazioni (della propria app) è possibile utilizzare la UIApplicationOpenSettingsURLString costante:

if let settingsURL = NSURL(string: UIApplicationOpenSettingsURLString) { 
    UIApplication.sharedApplication().openURL(settingsURL) 
} 

Questo è stato introdotto in iOS 8, in modo da poter utilizzalo su dispositivi che eseguono iOS 8 o versioni successive. Ma questo apre solo le impostazioni della tua app. Non le impostazioni della tastiera. E se la tua app non ha le sue impostazioni, apre l'app Impostazioni solo sulla sua pagina principale.

In passato (prima di iOS 5.1) è possibile aprire un URL delle impostazioni e accedere direttamente a quasi tutte le sottopagine nell'app Impostazioni. Apple ha rimosso questa funzionalità in iOS 5.1.

Tuttavia sembra funzionare di nuovo in iOS 8 e 9. Non è ufficialmente documentato da Apple, ma sembra funzionare, anche se non sono sicuro di quanto sia affidabile. Funziona sul mio iPhone iOS 9.1 ma non nel simulatore.

Così, con cautela, si può provare questo per aprire le impostazioni della tastiera:

if let settingsURL = NSURL(string: "prefs:root=General&path=Keyboard") { 
    UIApplication.sharedApplication().openURL(settingsURL) 
} 

O andare ancora più in profondità:

if let settingsURL = NSURL(string: "prefs:root=General&path=Keyboard/KEYBOARDS") { 
    UIApplication.sharedApplication().openURL(settingsURL) 
} 

Edit: Come iHulk accennato nei commenti si potrebbe essere necessario aggiungere prefs agli schemi URL nel file Info.plist del progetto per farlo funzionare.

+0

ogni caso di farlo in iOS 8 come Fleksy fa che in iOS 8, così come in iOS 9. – iHulk

+0

Avete provato su iOS 8? Non ho un dispositivo iOS8 a portata di mano per testarlo. Forse funziona anche su iOS 8 – joern

+0

ok ..Stavo cercando di farlo simulatore e non funzionava, appena testato sul dispositivo iOS 9 e funziona. Lo controllerò sul dispositivo iOS 8 e ti farò sapere se ci sta lavorando o no .. Grazie .. – iHulk

1

Ultimo messaggio che ho ricevuto dai revisori Apple: Le estensioni degli host delle app non sono conformi alla Guida alla programmazione delle estensioni app.

In particolare, l'app porta gli utenti direttamente alla pagina delle impostazioni della tastiera anziché indirizzare gli utenti alla pagina delle impostazioni specifiche per la tua app. Assicurati che la tua app porti solo gli utenti alla pagina delle impostazioni dell'app.

Quando mi è stato reindirizzamento a: prefs: root = Generale & path = tastiera/TASTIERE

+0

ohh .. sembra che abbiano iniziato a bloccare questo hack .. – iHulk

+0

@mamba, non hai qui qualcosa su qualcosa come la versione dark? – kelin

+0

Questo è strano perché la tastiera Flesky consente a questo – Roymunson

9

Come di iOS 10 "App-Prefs: root" dovrebbe essere usato invece di "preferenze: root". Vedi sotto il codice Objective C. Testato questo, il codice funziona bene ma Apple potrebbe rifiutare l'app a causa di questo.

NSString *settingsUrl= @"App-Prefs:root=General&path=Keyboard"; 

if ([[UIApplication sharedApplication] respondsToSelector:@selector(openURL:options:completionHandler:)]) { 

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:settingsUrl] options:@{} completionHandler:^(BOOL success) { 
    NSLog(@"URL opened"); 
    }]; 
} 
+1

Si noti che questo non funziona più in iOS 11 – Joey

Problemi correlati