Welche Schritte muss ich ausführen, um mit iOS 6 neu SLComposeViewController
auf Facebook, Twitter oder Sina Weibo zu posten?
Welche Schritte muss ich ausführen, um mit iOS 6 neu SLComposeViewController
auf Facebook, Twitter oder Sina Weibo zu posten?
Antworten:
Weitere Informationen zu diesem Framework finden Sie in der Apple Social Framework Class Reference
Zusätzliche Tutorials:
In diesem Beispiel verwenden wir die SLComposeViewController
's SLServiceTypeFacebook
. Wenn Sie Twitter oder SinaWeibo verwenden möchten, ändern Sie einfach den SLServiceType in einen der folgenden Werte:
iOS 6 hat es sehr einfach gemacht, mit dem direkt auf Facebook, Twitter oder Sina Weibo zu posten SLComposeViewController
. Dies funktioniert sehr ähnlich wie bei iOS 5 TWTweetComposeViewController
.
Zunächst in der Header-Datei Ihres View Controllers (.h) #import
das Social Framework und das Accounts Framework.
#import <Social/Social.h>
#import <Accounts/Accounts.h>
Hier erklären wir einen einfachen UIButton
und einen IBAction
, den wir später mit dieser Schaltfläche verknüpfen, und einen void
(sharedStatus), mit dem überprüft wird, ob der ausgewählte Freigabedienst verfügbar ist.
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIButton *easyFacebookButton;
- (IBAction)facebookPost:(id)sender;
- (void)sharingStatus;
@end
@implementation ViewController
Anschließend implementieren wir in Ihrer Implementierungsdatei (.m) zunächst die (sharedStatus) void, die wir in der Header-Datei deklariert haben. sharingStatus Verwendungen SLComposeViewController
‚s isAvailableForServiceType
BOOL zurückzukehren , ob Sie auf den Dienst in seinem Argument angegeben veröffentlichen können. In diesem Fall verwenden wir den Servicetyp SLServiceTypeFacebook
. Wenn der Dienst verfügbar ist, wird die Post-Schaltfläche mit einem Alpha-Wert von 1,0 f aktiviert. Wenn der Dienst nicht verfügbar ist, wird die Schaltfläche deaktiviert und der Alpha-Wert auf 0,5 f festgelegt.
- (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;
}
}
Hier werden wir das einrichten, das IBAction
den Komponisten aufruft. Für eine gute Vorgehensweise werden wir isAvailableForServiceType
erneut prüfen , um zu vermeiden, dass der Composer für einen Diensttyp aufgerufen wird, der nicht verfügbar ist. (Falls bei der letzten Überprüfung ein Fehler aufgetreten ist oder wenn sich die Verfügbarkeit im Bruchteil einer Sekunde zwischen dem Tippen auf den Post-Button und dem Komponisten all / init geändert hat. Der folgende Code wurde so eingerichtet, dass ein Facebook-Komponistenblatt mit Text angezeigt wird. Ein Bild und ein Link. Diese Aktion verwendet auch einen Abschluss-Handler für die abgebrochenen und erledigten Ergebnisse des Komponisten.
- (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];
}
}
In werden viewWillAppear
wir einen Beobachter registrieren, ACAccountStoreDidChangeNotification
damit die Anwendung benachrichtigt werden kann, wenn sich die Kontoinformationen ändern. Dieser Beobachter wird dann entfernt 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];
}
Öffnen Sie abschließend den Interface Builder und fügen Sie einen hinzu, UIButton
der die Post-Schaltfläche sein wird. Dann verlinken Sie im Verbindungsinspektor das IBOutlet
und IBAction
wir haben es zuvor mit der Schaltfläche erstellt, und das war's! Du bist fertig!
Verwenden Sie einfach diesen Code, um auf Facebook zu teilen.
SLComposeViewController *controllerSLC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
[controllerSLC setInitialText:@"First post from my iPhone app"];
[controllerSLC addURL:[NSURL URLWithString:@"http://www.appcoda.com"]];
[controllerSLC addImage:[UIImage imageNamed:@"test.jpg"]];
[self presentViewController:controllerSLC animated:YES completion:Nil];
Wenn Sie dies für Twitter möchten, ändern Sie einfach SLServiceTypeTwitter.
Sichere Verwendung von SLComposeViewController
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
{
SLComposeViewController *fbPost = [SLComposeViewController
composeViewControllerForServiceType: SLServiceTypeFacebook];
[fbPost setInitialText:@"Text You want to Share"];
[fbPost addImage:[UIImage imageNamed:@"shareImage.png"]];
[self presentViewController:fbPost animated:YES completion:nil];
[fbPost setCompletionHandler:^(SLComposeViewControllerResult result) {
switch (result) {
case SLComposeViewControllerResultCancelled:
NSLog(@"Post Canceled");
break;
case SLComposeViewControllerResultDone:
NSLog(@"Post Sucessful");
break;
default:
break;
}
[self dismissViewControllerAnimated:YES completion:nil];
}];
}