Pertanyaan Tutorial untuk berbagi SLComposeViewController [tertutup]


Apa langkah-langkah yang harus saya ikuti untuk menggunakan iOS 6 yang baru SLComposeViewController memposting ke Facebook, Twitter atau Sina Weibo?


75
2017-09-19 21:37


asal


Jawaban:


Untuk detail tentang kerangka ini, silakan lihat Apple Referensi Kelas Kerangka Sosial

Tutorial tambahan:

  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

Untuk contoh ini, kita akan menggunakan SLComposeViewController's SLServiceTypeFacebook. Jika Anda ingin menggunakan Twitter atau SinaWeibo, ubah saja SLServiceType menjadi salah satu dari yang berikut:

  • SLServiceTypeFacebook
  • SLServiceTypeSinaWeibo
  • SLServiceTypeTwitter

iOS 6 telah membuatnya sangat mudah untuk mengirim langsung ke Facebook, Twitter atau Sina Weibo menggunakan SLComposeViewController. Ini bekerja sangat mirip dengan iOS 5 TWTweetComposeViewController.

Pertama, dalam file header pengontrol tampilan Anda (.h) #import Kerangka Sosial dan Kerangka Akun.

#import <Social/Social.h>

#import <Accounts/Accounts.h>

Di sini kami akan menyatakan sederhana UIButton dan sebuah IBAction yang nantinya akan kami tautkan ke tombol itu dan a void (sharingStatus) yang akan digunakan untuk memeriksa apakah layanan berbagi yang dipilih tersedia.

@interface ViewController : UIViewController

@property (weak, nonatomic) IBOutlet UIButton *easyFacebookButton;
- (IBAction)facebookPost:(id)sender;
- (void)sharingStatus;
@end

@implementation ViewController

Kemudian, dalam file implementasi Anda (.m), kita akan mulai dengan menerapkan (sharingStatus) void yang kami nyatakan di file header. penggunaan sharingStatus SLComposeViewController's isAvailableForServiceType BOOL untuk kembali apakah Anda dapat memposting ke layanan yang ditentukan dalam argumennya. Dalam hal ini, kami akan menggunakan jenis layanan SLServiceTypeFacebook. Jika layanan tersedia, tombol pos akan diaktifkan dengan nilai alfa 1.0f, dan jika layanan tidak tersedia, tombol akan dinonaktifkan nilai alfa yang diatur ke 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;
    }
}

Di sini kita akan mengatur IBAction yang akan memanggil komposer. Untuk latihan yang baik, kami akan memeriksanya isAvailableForServiceType lagi untuk menghindari memanggil komposer untuk jenis layanan yang tidak tersedia. (Menyebabkan sesuatu yang salah selama pemeriksaan terakhir, atau jika ketersediaan entah bagaimana berubah dalam pecahan detik di antara menekan tombol pos dan komposer semua / init. Kode di bawah ini telah diatur untuk menampilkan lembar komposer Facebook dengan teks, gambar, dan tautan. Tindakan ini juga menggunakan handler penyelesaian untuk hasil yang dibatalkan dan dilakukan oleh komposer.

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

Di viewWillAppear kami akan mendaftarkan pengamat untuk ACAccountStoreDidChangeNotification sehingga aplikasi dapat diberi tahu ketika informasi akun berubah. Pengamat ini kemudian akan dihapus 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];
}

Dan akhirnya, buka pembangun antarmuka dan tambahkan UIButton yang akan menjadi tombol pos. Kemudian di sambungan inspektur tautkan IBOutlet dan IBAction kami buat sebelumnya ke tombol, dan hanya itu! Kamu sudah selesai!

enter image description here


140
2018-02-15 09:06



Cukup gunakan kode ini untuk dibagikan di Facebook.

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

Jika Anda menginginkan ini untuk Twitter maka ubah saja SLServiceTypeTwitter.


25
2018-06-20 06:28



Penggunaan Aman 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