en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

6.10.2013

使用 Social Framework 對社群網站發佈訊息

  

Social Framework 是在 iOS 6.0 SDK 中才加入的 Framework,它整合了目前常見的社群網站 API(Facebook、Twitter、SinaWeibo 等),並提供統一的介面與使用方法,在使用上非常的便利,而原先的 Twitter Framework 在 iOS 6.0 SDK 中也不再使用。

Social Framework 分成兩大部分,SLRequest 與 SLComposeViewController,在 SLRequest 中封裝了許許多多的 HTTP Request 屬性,你可以利用它們來改寫,製作出屬於自己的使用者介面,相對的,SLComposeViewController 則是已經寫好的樣板(UIViewController),直接套用即可。

ps:關於更多 Social Framework 的相關資訊,請參考官方網站的 Social Framework Reference


載入 Framework 與對應標頭檔
既然是使用 Social Framework,就別忘了把相關的 Framework 與對應的標頭檔連結加到專案中,對於新增 Framework 有問題的讀者們,請參考 Xcode 4 新增 Framework 的方法一文。
#import <Social/Social.h>
替專案增加 Social.framework


取用 SLComposeViewController 的樣板介面
在這部份,我們以 Twitter 為例子,你會發現我們使用 SLServiceTypeTwitter 字串來當做變數,告訴 SLComposeViewController 我們所要建立的 SLComposeViewController 為 Twitter 樣板,你也可以使用 SLServiceTypeFacebook 或是 SLServiceTypeSinaWeibo 等字串當做變數,來分別代表 Facebook 與 SinaWeibo。
//判斷社群網站的服務是否可用
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]) {

    //建立對應社群網站的ComposeViewController
    SLComposeViewController *mySocialComposeView = [[SLComposeViewController alloc]init];
    mySocialComposeView = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];

    //插入文字
    [mySocialComposeView setInitialText:@"Furnace iOS 程式設計 \n 中文學習網站"];

    //插入網址
    NSURL *myURL = [[NSURL alloc] initWithString:@"http://furnacedigital.blogspot.tw/"];
    [mySocialComposeView addURL: myURL];

    //插入圖片
    UIImage *myImage = [UIImage imageNamed:@"icon144.png"];
    [mySocialComposeView addImage:myImage];


    //呼叫建立的SocialComposeView
    [self presentViewController:mySocialComposeView animated:YES completion:^{
        NSLog(@"成功呼叫 SocialComposeView ");
    }];
}


訊息成功送出與否的之後處理
在 SLComposeViewController 中還有一個方法函式 setCompletionHandler:,它可以指定訊息發佈成功與否的後續處理動作,你可以將以下程式碼撰寫在上述程式碼「呼叫建立的SocialComposeView」的片段之後。
//訊息成功送出與否的之後處理
[mySocialComposeView setCompletionHandler:^(SLComposeViewControllerResult result){

    switch (result) {
        case SLComposeViewControllerResultCancelled:
            NSLog(@"取消送出");
            break;
        case SLComposeViewControllerResultDone:
            NSLog(@"完成送出");
            break;
        default:
            NSLog(@"其他例外");
            break;
    }

}];

在 Twitter 上的結果(包含內文、網址與圖片)







4 則留言:

  1. 請問要如何引用阿??

    回覆刪除
    回覆
    1. 您好:

      請問您要引用什麼東西?標頭檔?文章?

      刪除
  2. 匿名7/18/2014

    請問是要在手機上才能執行嗎?在iOS simulator 上沒辦法

    回覆刪除
    回覆
    1. 您好:
      要ios6.0以上的版本喔,如果都不能run的話,就只能在實機上執行了。

      刪除