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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top