Pour plus de détails sur ce cadre, veuillez consulter le site Web d'Apple. Référence des classes du cadre social
Tutoriels supplémentaires :
- http://soulwithmobiletechnology.blogspot.com/2012/07/tutorial-how-to-use-inbuilt.html
- http://www.mobile.safilsunny.com/iphone/integrating-facebook-ios/
- https://rudeboy-quickies.blogspot.com/2012/06/steps-to-integrate-facebook-in-ios6.html
Pour cet exemple, nous utiliserons l'option SLComposeViewController
's SLServiceTypeFacebook
. Si vous souhaitez utiliser Twitter ou SinaWeibo, il suffit de remplacer le SLServiceType par l'un des éléments suivants :
- SLServiceTypeFacebook
- SLServiceTypeSinaWeibo
- SLServiceTypeTwitter
Avec iOS 6, il est très facile de publier directement sur Facebook, Twitter ou Sina Weibo à l'aide de la fonction SLComposeViewController
. Le fonctionnement est très similaire à celui d'iOS 5. TWTweetComposeViewController
.
Tout d'abord, dans le fichier d'en-tête (.h) de votre contrôleur de vue #import
le cadre social et le cadre comptable.
#import <Social/Social.h>
#import <Accounts/Accounts.h>
Ici, nous allons déclarer un simple UIButton
et un IBAction
que nous lierons plus tard à ce bouton et un void
(sharingStatus) qui sera utilisé pour vérifier que le service de partage sélectionné est disponible.
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIButton *easyFacebookButton;
- (IBAction)facebookPost:(id)sender;
- (void)sharingStatus;
@end
@implementation ViewController
Ensuite, dans votre fichier d'implémentation (.m), nous allons commencer par implémenter le void (sharingStatus) que nous avons déclaré dans le fichier d'en-tête. sharingStatus utilise SLComposeViewController
's isAvailableForServiceType
BOOL pour retourner si oui ou non vous pouvez poster au service spécifié dans son argument. Dans ce cas, nous utiliserons le service de type SLServiceTypeFacebook
. Si le service est disponible, le bouton post sera activé avec une valeur alpha de 1.0f, et si le service n'est pas disponible, le bouton sera désactivé avec une valeur alpha de 0.5f.
- (void)sharingStatus {
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
NSLog(@"service available");
self.easyFacebookButton.enabled = YES;
self.easyFacebookButton.alpha = 1.0f;
} else {
self.easyFacebookButton.enabled = NO;
self.easyFacebookButton.alpha = 0.5f;
}
}
Ici, nous allons configurer le IBAction
qui appellera le compositeur. Pour une bonne pratique, nous vérifierons isAvailableForServiceType
à nouveau pour éviter d'appeler le compositeur pour un type de service qui n'est pas disponible. (Au cas où quelque chose se serait mal passé lors de la dernière vérification, ou si la disponibilité avait changé d'une manière ou d'une autre dans la fraction de seconde qui s'est écoulée entre le moment où vous avez appuyé sur le bouton de publication et celui où le compositeur a été activé. Le code ci-dessous a été configuré pour afficher une fiche de compositeurs Facebook avec du texte, une image et un lien. Cette action utilise également un gestionnaire d'achèvement pour les résultats de l'annulation et de l'exécution du compositeur.
- (IBAction)facebookPost:(id)sender {
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
SLComposeViewController *mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
[mySLComposerSheet setInitialText:@"iOS 6 Social Framework test!"];
[mySLComposerSheet addImage:[UIImage imageNamed:@"myImage.png"]];
[mySLComposerSheet addURL:[NSURL URLWithString:@"http://stackoverflow.com/questions/12503287/tutorial-for-slcomposeviewcontroller-sharing"]];
[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];
}
}
Sur viewWillAppear
nous allons enregistrer un observateur pour ACAccountStoreDidChangeNotification
afin que l'application puisse être notifiée lorsque les informations du compte changent. Cet observateur sera ensuite supprimé dans viewDidDisappear
.
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sharingStatus) name:ACAccountStoreDidChangeNotification object:nil];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:ACAccountStoreDidChangeNotification];
}
Et enfin, ouvrez le constructeur d'interface et ajoutez un UIButton
qui sera le bouton post. Ensuite, dans l'inspecteur des connexions, reliez le bouton IBOutlet
et IBAction
que nous avons créé plus tôt au bouton, et c'est tout ! Vous avez terminé !