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 才能正常瀏覽本網站,謝謝!

10.27.2011

簡單使用 iOS 5 的 Twitter API

如果您是 iOS 6.0 SDK 以上的使用者,這篇文章你將不再適用,請前往索引式搜索頁面中的 Social 分類項目,取得新的設定方式。

 

從 iOS 5 SDK 開始就內建 Twitter 的 Framework,下面程式碼將介紹如何簡單使用 Twitter API 來實做 Twitter 的推文,其方法與程式碼如下。

既然是使用 Twitter 的 Framework,那首先就要將它加入到我們的專案裡,並且在適當的地方引用其標頭檔,Framework 的加入方式大家可以參考Xcode 4 新增 Framework 的方法一文。


#import <Twitter/Twitter.h>
接著就是實做出推文的程式碼部份。

//建立viewcontroller
TWTweetComposeViewController *twitter = [[TWTweetComposeViewController alloc] init];

//設定推文的內容
[twitter setInitialText:@"iOS 5 Twitter API 測試。"];

//顯示viewcontroller
[self presentModalViewController:twitter animated:YES];

程式碼到此的執行結果就如同文章一開始的示範圖片,已經有了 Twitter 基本的推文功能,這裡值得注意的是,在程式碼中並沒有包含使用者的帳號密碼資訊,因為當你按下 Send 按鍵的同時,系統才會去後台設定尋找你的 Twitter 使用者資訊,若是你已經在裝置上設定好你的 Twitter 使用者資訊,那麼就會使用目前的使用這設定來進行推文。


除了一般的傳統文字外 Twitter API 也支援圖片或是網址超連結等,其方法如下。

//推文中加入圖片資訊
[twitter addImage:[UIImage imageNamed:@"3d logo.png"]];

//推文中加入網址超連結資訊
[twitter addURL:[NSURL URLWithString:[NSString stringWithString:@"http://furnacedigital.blogspot.com/"]]];

另外 Twitter API 也可以針對使用者在按下 Send 或是 Cancel 時分別處理其各自的動作,像是顯示推文成功或是推文失敗等等資訊。

//按下Send或是Cancel時的處理動作(block)
[twitter setCompletionHandler:^(TWTweetComposeViewControllerResult result) {
NSString *output;

switch (result) {
    case TWTweetComposeViewControllerResultCancelled:
         output = @"取消推文";
         break;

    case TWTweetComposeViewControllerResultDone:
         output = @"完成推文";
         break;

    default:
         break;
}

//使用者動作顯示於console
NSLog(@"%@", output);

//移除viewcontroller
[self dismissModalViewControllerAnimated:YES];
}];

有關更多的 Twitter API 使用方法,大家可以參考 iOS Developer Library 的說明。

PS:關於程式碼中所使用的 Block 技巧,可以參閱 Blocks!你不得不學習的 iOS 4 coding 新技術!一文。








17 則留言:

  1. 匿名6/05/2012

    請問可否也提供簡單使用微博 API 推文的教學(支援繁體)呢

    回覆刪除
    回覆
    1. 匿名6/05/2012

      好的,感謝您。目前我也在研究^^ 一起努力囉!

      刪除
    2. 您好:

      關於微博的 API 的部份,昨天還跟朋友有聊到,不過我可能還需要在研究一下。^^"

      你可以先參考新浪微博的官方網站對於 API 的使用說明!

      http://open.weibo.com/wiki/IOS_SDK

      刪除
    3. 祝你學習順利囉~

      刪除
    4. 匿名6/05/2012

      謝謝囉^_^

      刪除
  2. 匿名6/20/2012

    你好:
    关于设置Twitter账号后不能自动跳回APP有办法解决没呢

    回覆刪除
    回覆
    1. 您好:

      連點兩下 HOME 按鈕,應該可以看到您背景執行的 APP ,沒辦法「自動」開啟唷,也許你可以考慮尋找使用 Twitter .Framework 設定帳號密碼的方法,這樣就可以避開叫出系統設定畫面了!!

      刪除
    2. 匿名6/20/2012

      谢谢

      刪除
  3. 匿名6/22/2012

    請問如何得知已經下載Twitter,
    因為還未下載Twitter不能使用。

    回覆刪除
    回覆
    1. 您好:

      這是內建的功能喔,iOS 5.0 就有內建,更新完畢後就會自己出現了,

      當然如果你要實作本篇文章的示範,也必須要有 iOS 5.0 的SDK 才行。

      刪除
    2. 匿名6/22/2012

      感謝牛奶
      那如果是iOS 5.0以下,
      要如何克服這種限制呢?

      刪除
    3. 您好:

      我想可能除了JB之外沒有其他辦法了唷,可是JB好像也不會有Twitter的樣子...

      刪除
  4. 匿名7/02/2012

    你好,使用twitter框架出发推页面时默认页面是竖屏的,我的APP默认是横屏的,在用户没有手动旋转设备方向时不能显示正常效果,改怎么调呢

    回覆刪除
    回覆
    1. 匿名7/02/2012

      简单点说我的APP初始方向是横屏的,但twitter是按竖屏显示的,怎么让twitter初始方向也是横屏的?

      刪除
    2. 您好:

      關於你的問題,應該跟 TWITTER API無關喔,如果你的APP當初在設計時就有支援橫向螢幕 Landspace ,當裝置或是模擬器在倒置時,就會以橫向的格式出現。

      回到您的問題,你應該在設計應用程是時就「強制」只能使用 Landspace,關於設置方式你可以參考在 Xcode 中採用橫向介面設計的方法一文:
      http://furnacedigital.blogspot.tw/2011/06/xcode.html

      設置完成之後,你的裝置不管在任何擺放角度下,都會以 Landspace 顯示,希望有幫助到你。


      補充一下:

      我剛剛使用模擬器測試的結果,也都可以正常運行。

      另外你也可以直接在 Info.plist 中的 Supported interface orientations 屬性來做修改,另外在程式碼的部份僅實作向右倒置:
      return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);

      刪除
    3. 匿名7/03/2012

      非常感谢你的帮助,问题解决了

      刪除