Come aprire Preferenze / Impostazioni con iOS 5.1?
-
09-12-2019 - |
Domanda
Sembra che IOS 5.1 abbia rotto la codifica URL standard per la navigazione di un utente a una preferenza.
Ad esempio:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=TWITTER"]];
.
funziona in iOS 5.0 ma non in iOS 5.1 (sia dispositivo che simulatore).
Qualcuno ha trovato un modo per replicare questa funzionalità in iOS 5.1?
Soluzione
No Non conosco un modo per replicare questa funzionalità.
Ma ciò che puoi fare è presentare un radar che richiede il restauro. qui è un radar che richiede che i regimi siano documentati in primo luogo.
DAVID BARNARD ha confermato che iOS 5.1 Interrompe gli schemi dell'URL delle app impostazioni.
Aggiornamento : IOS 8 ha funzionalità simili per aprire le impostazioni della tua app. Grazie Apple, Mike e soto_ighost .
La costante UIApplicationOpenSettingsURLString
(Documentazione UIAPPLICAZIONE) aprirà le impostazioni per la tua app e non, ad esempio le impostazioni di Twitter. Non esattamente la stessa funzionalità ma molto più pulita di prima e ora ufficialmente riconosciuta.
Questo dovrebbe essere utile ora utile che ogni app ha un posto nelle impostazioni per l'utilizzo della privacy, dei dati cellulari, dell'applicazione dell'app background e delle notifiche.
Altri suggerimenti
È poco complicato, ottengo con la rimozione della sottoviews in *TWTWeetComposeViewController*
, quindi mostra solo avviso quando l'utente non è acceso e con il clic sul pulsante di impostazione, possiamo aprire la pagina di impostazione nella mia app.
+ (void)setAlertForSettingPage :(id)delegate
{
// Set up the built-in twitter composition view controller.
TWTweetComposeViewController *tweetViewController = [[TWTweetComposeViewController alloc] init];
// Create the completion handler block.
[tweetViewController setCompletionHandler:^(TWTweetComposeViewControllerResult result) {
[delegate dismissModalViewControllerAnimated:YES];
}];
// Present the tweet composition view controller modally.
[delegate presentModalViewController:tweetViewController animated:YES];
//tweetViewController.view.hidden = YES;
for (UIView *view in tweetViewController.view.subviews){
[view removeFromSuperview];
}
}
.
Qui, Delegate è il tuo viewcontroller, se si utilizza questo metodo all'interno del tuo viewcontroller, usa self
anziché delegate
.
Modifica: Se si ottiene errori deprecati, utilizzare invece il seguente codice compatibile IOS6:
.- (void)setAlertForSettingPage
{
// Set up the built-in twitter composition view controller.
SLComposeViewController *tweetViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
// Present the tweet composition view controller modally.
[self presentViewController:tweetViewController animated:YES completion:nil];
for (UIView *view in tweetViewController.view.subviews){
[view removeFromSuperview];
}
}
puoi farlo.
TWTweetComposeViewController *ctrl = [[TWTweetComposeViewController alloc] init];
if ([ctrl respondsToSelector:@selector(alertView:clickedButtonAtIndex:)]) {
// Manually invoke the alert view button handler
[(id <UIAlertViewDelegate>)ctrl alertView:nil
clickedButtonAtIndex:0];
}
. Se guardi in Twitter's Framework (che Twitter View Controller), ha "Prefs: root= Twitter" all'interno, 5.1 ha anche questa linea.Così probabilmente Apple ha fatto qualcosa per disabilitarlo per altre app, come una chiave speciale in Plist o metodo "OpenURL" in qualche modo controlla se non è un'app di sistema.