Pregunta

Parece que iOS 5.1 ha roto la codificación de URL estándar para llevar a un usuario a una Preferencia.

Por ejemplo:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=TWITTER"]];

Funciona en iOS 5.0 pero no en iOS 5.1 (tanto en dispositivo como en simulador).

¿Alguien ha encontrado una manera de replicar esta funcionalidad en iOS 5.1?

¿Fue útil?

Solución

No, no conozco la manera de replicar esta funcionalidad.

Pero lo que puede hacer es archivar un radar solicitando la restauración. Aquí hay un radar solicitando que los esquemas se documenten en primer lugar.

David Barnard ha confirmado que iOS 5.1 rompe los sistemas de URL de las aplicaciones de configuración.


update : iOS 8 tiene una funcionalidad similar para abrir la configuración de su aplicación. Gracias Apple, Mike y Soto_ighost .

la constante UIApplicationOpenSettingsURLString (documentación de UIAPPlication) abrirá la configuración de su aplicación y no, por ejemplo, digamos la configuración de Twitter. No exactamente la misma funcionalidad, pero mucho más limpia que antes y ahora oficialmente reconocida.

Esto debería ser más útil ahora que cada aplicación tiene un lugar en la configuración para usar la privacidad, los datos celulares, la actualización de la aplicación de fondo y las notificaciones.

Otros consejos

Es un poco complicado, lo soluciono eliminando las subvistas en *TWTWeetComposeViewController*, por lo que solo muestra una alerta cuando el usuario no ha iniciado sesión y al hacer clic en el botón de configuración, podemos abrir la página de configuración en mi aplicación.

     + (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];
        }

     } 

aquí, delegado es su controlador de vista, si está utilizando este método dentro de su controlador de vista, simplemente use self en lugar de delegate.

EDITAR: Si recibe algún error obsoleto, utilice el siguiente código compatible con 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];
    }
}

puedes hacer esto.

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];
                    }

Si mira en el marco de Twitter (ese controlador de vista de Twitter), tiene "Prefs: root= twitter" en el interior, 5.1 también tiene esta línea.Por lo tanto, probablemente Apple hizo algo para deshabilitarlo por otras aplicaciones, como una clave especial en la plist o el método "OpenURL" de alguna manera, verifica si no es una aplicación del sistema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top