web-dev-qa-db-fra.com

À propos de "SLComposeViewController" dans la version bêta d'iOS 11

Dans mon projet, j'utilise toujours SLComposeViewController pour partager du contenu avec des applications tierces, mais maintenant, lorsque je mets à jour mon iPhone vers iOS 11 bêta, cela ne fonctionne plus.

SLComposeViewControllerCompletionHandler rappelle toujours SLComposeViewControllerResultCancelled.

Pourquoi est-ce?

16
hujie

J'avais des problèmes avec le SLComposer dans iOS 11. Mais je viens de supprimer la ligne qui vérifie et apparemment le propre SDK me fait les validations en interne.

Supprimer cette ligne sert pour tout SLServiceType:

if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {

Alors, développez votre logique. Dans mon cas:

SLComposeViewController *mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

        [mySLComposerSheet setInitialText:@"#myInitialTextIsHere"];
        [mySLComposerSheet addURL:[NSURL URLWithString:strURL]];

        [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {

            switch (result) {
                case SLComposeViewControllerResultCancelled:
                    NSLog(@"Post Canceled");
                    break;
                case SLComposeViewControllerResultDone:
                    NSLog(@"Post Sucessful");
                    break;

                default:
                    break;
            }
        }];

        [self presentViewController:mySLComposerSheet animated:YES completion:nil];

J'espère avoir aidé!

19
Matheus Domingos

iOS 11 a supprimé l'accès aux comptes tiers (tels que Facebook et Twitter) via l'application Paramètres. Je me bats actuellement avec la même chose.

Vous devez maintenant intégrer la fonctionnalité avec le SDK de la tierce partie. Twitter a une page de migration ici sur les étapes à suivre: -

https://dev.Twitter.com/twitterkit/ios/migrate-social-framework

Je n'ai pas encore trouvé d'instructions spécifiques sur la façon de migrer d'autres réseaux sociaux, mais il est sûr de dire que cela nécessitera leur SDK tiers.

Pas de partage social plus facile à utiliser :-(

12
user8315745

Pour iOS 11, cette ligne:

 ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) 

renvoie toujours NO

Je l'ai remplacé par vérifier si l'utilisateur a installé l'application Facebook avec:

static NSString *const canOpenFacebookURL = @"fbauth2";

+ l'ajouter à LSApplicationQueriesSchemes dans plist

-(BOOL)isFacebookAppInstalled {
    NSURLComponents *components = [[NSURLComponents alloc] init];
    components.scheme = canOpenFacebookURL;
    components.path = @"/";
    return [[UIApplication sharedApplication]
            canOpenURL:components.URL];
}

Et puis appelez simplement SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

comme d'habitude, la même chose que Matheus Domingos a décrit. Mais avec cette vérification au moins, vous savez que l'utilisateur a installé l'application Facebook.

6
bekzattt