Tôi cần làm theo các bước nào để sử dụng iOS 6 mới SLComposeViewController
để đăng lên Facebook, Twitter hoặc Sina Weibo?
Tôi cần làm theo các bước nào để sử dụng iOS 6 mới SLComposeViewController
để đăng lên Facebook, Twitter hoặc Sina Weibo?
Câu trả lời:
Để biết chi tiết về khung này, vui lòng xem Tham chiếu Lớp Khung xã hội của Apple
Hướng dẫn bổ sung:
Đối với ví dụ này, chúng tôi sẽ sử dụng SLComposeViewController
's SLServiceTypeFacebook
. Nếu bạn muốn sử dụng Twitter hoặc SinaWeibo, chỉ cần thay đổi SLServiceType thành một trong những cách sau:
iOS 6 đã giúp bạn dễ dàng đăng trực tiếp lên Facebook, Twitter hoặc Sina Weibo bằng cách sử dụng SLComposeViewController
. Điều này hoạt động rất giống với iOS 5 TWTweetComposeViewController
.
Đầu tiên, trong tệp tiêu đề của trình điều khiển chế độ xem (.h) #import
, Khung xã hội và Khung tài khoản.
#import <Social/Social.h>
#import <Accounts/Accounts.h>
Ở đây chúng tôi sẽ khai báo một đơn giản UIButton
và một IBAction
mà sau này chúng tôi sẽ liên kết đến nút đó và một void
(sharedStatus) sẽ được sử dụng để kiểm tra xem dịch vụ chia sẻ đã chọn có khả dụng hay không.
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIButton *easyFacebookButton;
- (IBAction)facebookPost:(id)sender;
- (void)sharingStatus;
@end
@implementation ViewController
Sau đó, trong tệp triển khai của bạn (.m), chúng tôi sẽ bắt đầu bằng cách triển khai void (sharingStatus) mà chúng tôi đã khai báo trong tệp tiêu đề. sharingStatus sử dụng SLComposeViewController
's isAvailableForServiceType
BOOL trở về hay không, bạn có thể gửi đến dịch vụ quy định tại đối số của nó. Trong trường hợp này, chúng tôi sẽ sử dụng loại dịch vụ SLServiceTypeFacebook
. Nếu dịch vụ khả dụng, nút đăng sẽ được bật với giá trị alpha là 1,0f và nếu không có dịch vụ, nút sẽ bị vô hiệu hóa giá trị alpha được đặt thành 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;
}
}
Ở đây chúng tôi sẽ thiết lập IBAction
cái sẽ gọi trình soạn nhạc. Để thực hành tốt, chúng tôi sẽ kiểm tra isAvailableForServiceType
lại để tránh gọi người soạn nhạc cho một loại dịch vụ không khả dụng. (Đã xảy ra sự cố trong lần kiểm tra cuối cùng hoặc nếu tính khả dụng bằng cách nào đó đã thay đổi trong một phần giây giữa việc nhấn vào nút đăng và tất cả các nhà soạn nhạc / init. Đoạn mã dưới đây đã được thiết lập để hiển thị trang tính các nhà soạn nhạc trên Facebook với văn bản, một hình ảnh và một liên kết. Hành động này cũng sử dụng một trình xử lý hoàn thành cho các kết quả đã hủy và hoàn thành của nhà soạn nhạc.
- (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];
}
}
Trong viewWillAppear
chúng tôi sẽ đăng ký một người quan sát để ACAccountStoreDidChangeNotification
ứng dụng có thể được thông báo khi thông tin tài khoản thay đổi. Người quan sát này sau đó sẽ bị xóa trong 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];
}
Và cuối cùng, mở trình tạo giao diện và thêm một UIButton
nút sẽ là nút đăng. Sau đó, trong trình kiểm tra kết nối liên kết IBOutlet
và IBAction
chúng tôi đã tạo trước đó với nút, và thế là xong! Bạn đã hoàn tất!
Chỉ cần sử dụng mã này để chia sẻ trên 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];
Nếu bạn muốn điều này cho Twitter thì chỉ cần thay đổi SLServiceTypeTwitter.
Sử dụng an toàn 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];
}];
}