Question

Il semble qu'iOS 5.1 ait rompu le codage d'URL standard pour diriger un utilisateur vers une préférence.

Par exemple:

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

Fonctionne sous iOS 5.0 mais pas sous iOS 5.1 (appareil et simulateur).

Quelqu'un a-t-il trouvé un moyen de reproduire cette fonctionnalité dans iOS 5.1 ?

Était-ce utile?

La solution

Non, je ne sais pas un moyen de reproduire cette fonctionnalité.

Mais ce que vous pouvez faire est de produire un radar qui demande la restauration. Voici un radar demandant que les schémas soient documentés en premier lieu.

David Barnard a confirmé que iOS 5.1 casse les régimes d'URL d'applications de paramètres.


mise à jour : iOS 8 a une fonctionnalité similaire pour ouvrir les paramètres de votre application. Merci Apple, Mike et Soto_ightost .

La constante UIApplicationOpenSettingsURLString (documentation uiapplication) ouvrira les paramètres de votre application et non, dites les paramètres de Twitter. Pas exactement la même fonctionnalité mais beaucoup plus propre qu'avant et maintenant officiellement reconnu.

Cela devrait être plus utile maintenant que chaque application a une place dans les paramètres d'utilisation de la confidentialité, des données cellulaires, de l'application d'arrière-plan et des notifications.

Autres conseils

C'est un peu délicat, j'arrive en supprimant les sous-vues dans *TWTWeetComposeViewController*, donc il affiche uniquement une alerte lorsque l'utilisateur n'est pas connecté et en cliquant sur le bouton de configuration, nous pouvons ouvrir la page de configuration dans mon application.

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

     } 

ici, le délégué est votre viewcontroller, si vous utilisez cette méthode dans votre viewcontroller, utilisez simplement self au lieu de delegate.

MODIFIER: Si vous obtenez des erreurs obsolètes, utilisez plutôt le code compatible iOS6 suivant :

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

Vous pouvez le faire.

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 vous regardez dans le cadre de Twitter (ce contrôleur de vue Twitter), il a «Prefs: root= Twitter» à l'intérieur, 5.1 a également cette ligne.Donc, probablement Apple a fait quelque chose à désactiver pour les autres applications, comme une clé spéciale dans le plis ou la méthode "openurl" en quelque sorte chèques si ce n'est pas une application système.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top