我需要遵循以下步驟才能使用iOS 6的新SLComposeViewController
發佈到Facebook,Twitter或新浪微博?SLComposeViewController共享教程
回答
有關此框架請參閱蘋果Social Framework Class Reference
其他教程的詳細信息:
- http://soulwithmobiletechnology.blogspot.com/2012/07/tutorial-how-to-use-inbuilt.html
- http://www.mobile.safilsunny.com/iphone/integrating-facebook-ios/
- http://rudeboy-quickies.blogspot.com/2012/06/steps-to-integrate-facebook-in-ios6.html
- https://developer.apple.com/videos/wwdc/2012/?id=306
在這個例子中,我們將使用SLComposeViewController
的SLServiceTypeFacebook
。如果您想使用Twitter或新浪微博只是改變了SLServiceType下列之一:
- SLServiceTypeFacebook
- SLServiceTypeSinaWeibo
- SLServiceTypeTwitter
的iOS 6已經變得很容易,直接發佈到Facebook,Twitter或新浪微博使用SLComposeViewController
。這與iOS 5的TWTweetComposeViewController
非常類似。
首先,在您的視圖控制器的頭文件(.h)#import
社會框架和帳戶框架。
#import <Social/Social.h>
#import <Accounts/Accounts.h>
在這裏,我們將聲明一個簡單UIButton
和IBAction
,我們將在後面鏈接到該按鈕和void
(sharingStatus),其將被用於檢驗所選擇的共享服務是可用。然後,在您的實現文件(.m)中,我們將首先實現我們在頭文件中聲明的(sharingStatus)void。 sharingStatus使用SLComposeViewController
的isAvailableForServiceType
BOOL返回是否可以發佈到其參數中指定的服務。在這種情況下,我們將使用服務類型SLServiceTypeFacebook
。如果該服務可用,則後置按鈕將以1.0f的阿爾法值被啓用,並且如果該服務不可用,則該按鈕將被禁用其α值被設置爲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;
}
}
在這裏,我們將設置IBAction
,將調用作曲家。對於良好的做法,我們將再次檢查isAvailableForServiceType
以避免調用作曲家以查找不可用的服務類型。 (在最後一次檢查過程中發生了錯誤,或者在點擊發布按鈕和作曲者all/init之間以某種方式改變了可用性,下面的代碼已經設置爲顯示帶有文本的Facebook作曲家工作表,一個圖像和一個鏈接,這個動作還爲作曲家取消和完成的結果使用了一個完成處理程序。
- (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];
}
}
在viewWillAppear
我們將觀察員註冊ACAccountStoreDidChangeNotification
所以應用程序可以通知賬戶信息發生變化時。此觀察員將在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];
}
最後,打開界面生成器,並添加UIButton
這將是後按鈕。然後在連接檢查員鏈接前面創建的IBOutlet
和IBAction
到按鈕,就是這樣!你完成了!
只要使用這個代碼在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];
如果你想要這個Twitter的,那麼只需更改SLServiceTypeTwitter。
安全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];
}];
}
- 1. SLComposeViewController,共享不起作用
- 2. Xcode4.5如何與SLComposeViewController共享按鈕
- 3. 爲什麼SLComposeViewController不能在Ipad中共享文本和鏈接?
- 4. 如何在SLComposeViewController ios中獲取twitter,facebook共享ID?
- 5. 如何檢測用戶與SLComposeViewController成功共享
- 6. 我們可以使用SLComposeViewController在FB上共享視頻嗎?
- 7. SLCOmposeviewcontroller微博分享提醒問題
- 8. SLComposeViewController
- 9. PageContext線程共享
- 10. Xamarin共享工程
- 11. 「SLComposeViewController」是否已停止預先填充Facebook共享的初始文本?
- 12. 父進程和子進程共享一個IPC共享內存
- 13. IPC ::共享的共享
- 14. SLComposeViewController CompletionHandler
- 15. chrome.desktopCapture - 遠程屏幕共享
- 16. 多線程共享變量
- 17. 共享對象和線程
- 18. 從遠程網絡共享
- 19. 應用程序共享
- 20. Java屏幕共享程序
- 21. 共享列表線程
- 22. WCF和共享程序集
- 23. 線程共享的Perl
- 24. Spring Boot共享線程
- 25. C#線程共享數據
- 26. 多線程共享資源
- 27. android共享應用程序
- 28. 跨進程共享位圖
- 29. 是線程池共享 - .net
- 30. 共享緩衝區進程
嗨, 這是一個不錯的答案,不過我有小疑問,可我們還的情況下,用戶的Twitter/Facebook帳戶目前登錄界面沒有設置向上? –
@AbhinandanSahgal不,不是這個班。但是,在正常工作時,作曲家將檢測用戶是否未登錄並顯示警報,以便將他們帶到相應服務的設置以登錄其帳戶。 –
你可以把樣品帶到設置嗎? –