Frage Tutorial für SLComposeViewController sharing [geschlossen]


Welche Schritte muss ich befolgen, um iOS 6 neu zu verwenden? SLComposeViewController auf Facebook, Twitter oder Sina Weibo veröffentlichen?


75
2017-09-19 21:37


Ursprung


Antworten:


Details zu diesem Framework finden Sie unter Apples Referenz für soziale Framework-Klassen

Zusätzliche Tutorials:

  1. http://soulwithmobiletechnology.blogspot.com/2012/07/tutorial-how-to-use-inbuilt.html
  2. http://www.mobile.safilsunny.com/iphone/integrating-facebook-ios/
  3. http://rudeboy-quickies.blogspot.com/2012/06/steps-to-integrate-facebook-in-ios6.html
  4. https://developer.apple.com/videos/wwdc/2012/?id=306

In diesem Beispiel verwenden wir die SLComposeViewControllerist es SLServiceTypeFacebook. Wenn Sie Twitter oder SinaWeibo verwenden möchten, ändern Sie einfach den SLServiceType zu einem der folgenden:

  • SLServiceTypefacebook
  • SLServiceTypeSinaWeibo
  • SLServiceTypeTwitter

iOS 6 hat es sehr einfach gemacht, direkt auf Facebook, Twitter oder Sina Weibo zu posten SLComposeViewController. Dies funktioniert sehr ähnlich wie iOS 5 TWTweetComposeViewController.

Zuerst, in Ihrer Sicht Controller-Header-Datei (. H) #import der soziale Rahmen und der Kontenrahmen.

#import <Social/Social.h>

#import <Accounts/Accounts.h>

Hier werden wir ein einfaches erklären UIButton und ein IBAction dass wir später auf diesen Knopf verlinken und a void (sharingStatus), 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

In Ihrer Implementierungsdatei (.m) beginnen wir dann damit, die (sharingStatus) void zu implementieren, die wir in der Header-Datei deklariert haben. sharingStatus verwendet SLComposeViewControllerist es isAvailableForServiceType BOOL, um zurückzugeben, ob Sie zu dem in seinem Argument angegebenen Dienst posten können oder nicht. In diesem Fall verwenden wir den Servicetyp SLServiceTypeFacebook. Wenn der Dienst verfügbar ist, wird die Schaltfläche "Post" mit einem Alpha-Wert von 1,0f aktiviert. Wenn der Dienst nicht verfügbar ist, wird die Schaltfläche deaktiviert und der Alpha-Wert auf 0,5f 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 IBAction das wird den Komponisten aufrufen. Für eine gute Übung werden wir prüfen isAvailableForServiceType erneut, um zu vermeiden, dass der Composer für einen Diensttyp aufgerufen wird, der nicht verfügbar ist. (Falls etwas während der letzten Überprüfung schief gelaufen ist oder sich die Verfügbarkeit im Bruchteil einer Sekunde zwischen dem Tippen auf den post-Button und den Komponisten all / init geändert hat. Der folgende Code wurde so eingerichtet, dass ein Facebook-Komponistenblatt mit Text angezeigt wird. Ein Bild und eine Verknüpfung Diese Aktion verwendet auch einen Beendigungshandler für die abgebrochenen und abgeschlossenen 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];
    }
}

Im viewWillAppear Wir werden einen Beobachter registrieren ACAccountStoreDidChangeNotification So kann die Anwendung benachrichtigt werden, 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];
}

Und schließlich, öffnen Sie den Interface Builder und fügen Sie einen hinzu UIButton Das wird der Post-Button sein. Dann im Verbindungsinspektor die Verbindung herstellen IBOutlet und IBAction wir haben früher den Button erstellt und das wars! Sie sind fertig!

enter image description here


140
2018-02-15 09:06



Verwenden Sie diesen Code, um ihn 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 wollen, ändern Sie einfach SLServiceTypeTwitter.


25
2018-06-20 06:28



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

13