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?
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é!
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 :-(
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.