Iphone developer advance twitter

817 views
739 views

Published on

iphone development , Eakapong Kattiya

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
817
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Iphone developer advance twitter

  1. 1. iPhone Developer Advance Program by Eakapong KattiyaWednesday, October 27, 2010
  2. 2. ความรู้พื้นฐานที่จําเป็น - Objective-C for iPhone Programming - Basic UI iPhone Programming - Model View Controller - XML / JSON - OAuthWednesday, October 27, 2010
  3. 3. What is twitter         ทวิตเตอร์ (Twitter) คือเว็บไซต์ที่ให้บริการ blog สั้นๆ หรือที่ ภาษาอังกฤษเรียกกันว่า Micro-Blog ซึ่งสามารถให้ผู้ใช้ส่งข้อความ ของตนเอง ให้เพื่อน ๆ ที่ติดตาม twitter ของเราอยู่อ่านได้ และเรา เองก็สามารถอ่านข้อความของเพื่อน หรือคนที่เราติดตามเขาอยู่ได้ ซึ่ง twitter ก็ถือได้ว่าเป็นเว็บไซต์ประเภท social media ด้วยเช่นกัน      ใน รูปแบบของ twitter นี้ ที่เรียกว่าเป็น blog สั้นก็เพราะว่า twitter ให้เขียนข้อความได้ครั้งละไม่เกิน 140 ตัวอักษร ซึ่งข้อความ นี้เมื่อเขียนแล้วจะไปแสดงอยู่ในหน้า profile ของผู้เขียนนั่นเอง และ จะทําการส่งข้อความนี้ไปยังสมาชิกที่ติดตามผู้เขียนคนนั้นอยู่ (follower) โดยอัตโนมัติ        ที่มา http://beta.i3.in.th/content/view/2094Wednesday, October 27, 2010
  4. 4. What is twitter         แต่สิ่งหนึ่งที่มาช่วยให้ Twitter มีประโยชน์ และสนุกมากขึ้น ก็ คือ คุณสามารถติดตาม (Follow) คนอื่นๆ ที่เขาเขียนข้อความลงไป ใน Twitter ของเขาได้ ว่าเขาคนนั้นกําลังทําอะไรอยู่ โดยเมื่อคุณ ติดตาม (Follow) เขาแล้ว เมื่อคนนั้นเขาทําอะไรและพิมพ์อะไรลงไป ใน Twitter คุณก็ได้รับข้อความเหล่านั้นด้วยไปพร้อมๆ กัน และก็ สามารถติดตามได้ทีละหลายๆ คน ซึ่งก็จะทําให้คุณทราบว่าเขาเหล่า นั้นกําลังทําอะไรอยู่ในขณะนั้นทันที ที่มา http://beta.i3.in.th/content/view/2094Wednesday, October 27, 2010
  5. 5. ประโยชน์ของ twitter ที่มีต่อการตลาด เป็นเครื่องมือทางการตลาด        สามารถ ใช้เป็นเครื่องทางการตลาดในการสื่อสาร กับกลุ่มเป้าหมายของสินค้าหรือ บริการได้ดี เพราะสามารถสื่อสารได้แบบทันที (Real time) และยังสามารถใช้เป็นเครื่องมือใน การสร้างความสัมพันธ์ (Relation) กับกลุ่มเป้าหมายได้ดีอีกด้วย  สร้างการรับรู้ของ Brand         การสื่อสารผ่าน Twitter ไปยังกลุ่มเป้าหมายบ่อยๆ จะทําให้การรับรู้ของ Brand ดีขึ้น และจะรู้สึกคุ้นเคยกับ Brand ดีขึ้นเช่นกัน ทําให้สามารถสร้างความต่อเนื่องของ Brand ได้  ช่องทางกระจายข้อมูลข่าวสารช่องทางใหม่       ตอนนี้มีหลายๆ เว็บไซต์ เริ่มมีการนํา Twitter มาเป็นช่องทางหนึ่งในการ ส่งข้อมูลล่าสุด ที่ทางเว็บไซต์มี เช่น สํานักข่าวต่างประเทศหลายๆ แห่งเช่น BBC (http://twitter.com/ bbctech), CNN, BusinessWeek, ESPN, CNET (http://twitter.com/cnetnews) ก็เริ่มนํา Twitter มาใช้ในการส่งข่าว ให้กับผู้ที่สนใจ สามารถติดตามผ่าน Twitter ได้ทันที   ที่มา http://beta.i3.in.th/content/view/2094Wednesday, October 27, 2010
  6. 6. ประโยชน์ของ twitter ที่มีต่อการตลาด แจ้งข้อมูลสินค้าหรือบริการใหม่ๆ         มีหลายๆ เว็บไซต์เริ่มนํา Twitter มาใช้ในการ แจ้งข้อมูลสินค้าใหม่ๆ ให้กับผู้ที่สนใจ สามารถติดตาม จากเว็บไซต์ได้ทันทีผ่าน Twitter เช่น เว็บไซต์ Amazon.com ใช้ Twitter ส่ง โปรโมชั่นสินค้าใหม่ๆ ผ่าน Twitter http://twitter.com/amazondeals หรือเว็บไซต์ www.woot.com เว็บไซต์ขายสินค้า ก็มี Twitter ให้บริการ  ติดตามได้ที่ http://twitter.com/ woot เครื่องมือในการศึกษาข้อมูล           เราสามารถใช้ Twitter เป็นเครื่องมือในการศึกษา และวิเคราะห์ว่า ตอนนี้ Brand หรือ สินค้า-บริการของเรา มีใครพูดถึงบ้างใน Twitter และเขาพูดถึงในมุมไหน? และยังสามารถใช้ ศึกษาพฤติกรรมของลุกค้า หรือกลุ่มเป้าหมายของเราได้ดีอีกด้วย โดยมีเครื่องมือหลายอย่าง ที่สามารถจะนํามาใช้ Monitor และติดตามความเคลื่อนไหวหรือพฤติกรรมของกลุ่มเป้าหมาย ได้ ที่มา http://beta.i3.in.th/content/view/2094Wednesday, October 27, 2010
  7. 7. What is OAuth รู้จักกับ OAuth OAuth ก็คือ Protocol ในการแลกเปลี่ยน User Identity แบบหนึ่ง ซึ่งใช้ระบบ Token กล่าวคือ ถ้าเราหรือตัว Application ที่เป็นคนกลางต้องการจะทําอะไร ในฐานะ User ได้ เราก็ต้องมี Token ที่ยืนยันว่าเราได้รับสิทธิ์จากผู้ใช้เสียก่อน ซึ่งระบบ Token นี้ ทําให้เกิดความปลอดภัยมากกว่า Protocol แบบดั้งเดิมคือ User ไม่ต้องบอก username และ password แก่ คนกลางหรือ Application โดยตรง แต่จะทําการ Login ผ่าน Twitter แล้ว Server Twitter จะส่ง Token มาให้ iphone เพื่อทํางานเสมือนว่าเป็นผู้ใช้เอง รายละเอียดเพิ่มเติม http://oauth.net/Wednesday, October 27, 2010
  8. 8. Wednesday, October 27, 2010
  9. 9. How to start ? เราจะสร้าง iphone application เพื่อทําการ Tweet ข้อความของเรา ด้วย iPhone SDK โดยเริ่มจากการ 1. สมัคร Twitter Account www.twitter.com 2. สร้าง Twitter Application http://twitter.com/apps/new 3. Download Twitter-OAuth-iphone source http://github.com/bengottlieb/Twitter-OAuth-iPhoneWednesday, October 27, 2010
  10. 10. Step1. Import Twitter-OAuth-iphone to project เริ่มจากการ download at  http://github.com/bengottlieb/Twitter- OAuth-iPhone และเปิดProject TwitterRush-Complete ให้เสร็จ เรียบร้อย จากนั้นให้ link เข้ามาใช้ใน project ของเราดังนี้ 1. ในขณะที่เราเปิดโปรเจ็คของเราอยู่ ให้เปิดไฟล์ ชื่อ TwitterRush.xcodeproj ซึ่งอยู่ในโฟลเดอร์ชื่อ src ของไฟล์ที่ เรา download มา 2. ลาก group ที่ชื่อ Twitter+OAuth ที่อยู่ใน project ที่เรา download มาลงไปใส่ในโปรเจ็คของเรา (เลือก Copy items into destination group’s folder (if needed) 3. click ขวาที่โปรเจ็คของเราแล้วเลือก Get Info, ใน tab Build ให้ ไปกําหนดค่าของ User Header Search Paths เป็น path ตําแหน่ง directory ของไฟล์ FBConnect.xcodeproj ที่เราเปิด ในข้อ 1 เท่านี้ก็เรียบร้อยWednesday, October 27, 2010
  11. 11. Step 2: Add the libxml2 Library 1. Add Framework libxml2.dylib 2. click ขวาที่โปรเจ็คของเราแล้วเลือก Get Info, ใน tab Build ให้ ไปกําหนดค่าของ Header Search Paths เป็น path $(SDKROOT)/usr/include/libxml2 โดยเลือกแบบ Recursive คือเอา sub folder ทุกตัวมาด้วยWednesday, October 27, 2010
  12. 12. Step 3: Declare the NSXMLParserDelegate ทําการขจัด warning ที่มีด้วยการประกาศ NSXMLParserDelegate ให้กับ Class MGTwitterXMLParser และ MGTwitterXMLParser เนื่องจากมีการเรียกใช้ NSXMLParser ใน Class ทั้งสองนี้ @interface MGTwitterStatusesParser : MGTwitterXMLParser <NSXMLParserDelegate> { @interface MGTwitterXMLParser : NSObject <NSXMLParserDelegate> {Wednesday, October 27, 2010
  13. 13. Step 4: Import SA_OAuthTwitterController.h & Declare SA_OAuthTwitterEngine TwitterRushViewController.h #import <UIKit/UIKit.h> #import "SA_OAuthTwitterController.h" @class SA_OAuthTwitterEngine; @interface TwitterRushViewController : UIViewController <UITextFieldDelegate, SA_OAuthTwitterControllerDelegate> { ! IBOutlet UITextField *tweetTextField; ! SA_OAuthTwitterEngine *_engine; } @property(nonatomic, retain) IBOutlet UITextField *tweetTextField; -(IBAction)updateTwitter:(id)sender; @endWednesday, October 27, 2010
  14. 14. Step 5: Import SA_OAuthTwitterEngine สําหรับสร้าง Token ในการติดต่อกับ Twitter API TwitterRushViewController.m #import "SA_OAuthTwitterEngine.h" //we need SA_OAuthTwitterControllerDelegate #define kOAuthConsumerKey @"Your consumer key here" #define kOAuthConsumerSecret @"Your consumer secret here" - (void)viewDidAppear: (BOOL)animated { ! if(!_engine){ ! ! _engine = [[SA_OAuthTwitterEngine alloc] initOAuthWithDelegate:self]; ! ! _engine.consumerKey = kOAuthConsumerKey; ! ! _engine.consumerSecret = kOAuthConsumerSecret; ! } }Wednesday, October 27, 2010
  15. 15. Step 6: สร้าง Login Screen TwitterRushViewController.m - (void)viewDidAppear: (BOOL)animated { ! if(!_engine){ ! ! _engine = [[SA_OAuthTwitterEngine alloc] initOAuthWithDelegate:self]; ! ! _engine.consumerKey = kOAuthConsumerKey; ! ! _engine.consumerSecret = kOAuthConsumerSecret; ! } //Create Login Screen if user never login before ! if(![_engine isAuthorized]){ ! UIViewController *vcController = [SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine:_engine delegate:self]; ! if (controller){ ! ! [self presentModalViewController: vcController animated: YES]; ! } } }Wednesday, October 27, 2010
  16. 16. Step 7: สร้าง Delegate สําหรับ Login Screen TwitterRushViewController.m #pragma mark SA_OAuthTwitterEngineDelegate - (void) storeCachedTwitterOAuthData: (NSString *) data forUsername: (NSString *) username { ! NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; ! [defaults setObject: data forKey: @"authData"]; ! [defaults synchronize]; } - (NSString *) cachedTwitterOAuthDataForUsername: (NSString *) username { ! return [[NSUserDefaults standardUserDefaults] objectForKey: @"authData"]; }Wednesday, October 27, 2010
  17. 17. Step 8: Post ข้อความบน Tweeter โดยเรียกผ่าน Method sendUpdate ของ SA_OAuthTwitterEngine โดยประกาศ Delegate requestSucceeded และ requestFailed สําหรับตรวจสอบสถานะการ Tweet ว่าสําเร็จหรือไม่ TwitterRushViewController.m [_engine sendUpdate:tweetTextField.text]; #pragma mark TwitterEngineDelegate - (void) requestSucceeded: (NSString *) requestIdentifier { ! NSLog(@"Request %@ succeeded", requestIdentifier); } - (void) requestFailed: (NSString *) requestIdentifier withError: (NSError *) error { ! NSLog(@"Request %@ failed with error: %@", requestIdentifier, error); }Wednesday, October 27, 2010
  18. 18. Appendix : Search ข้อความบน Tweeter TwitterRushViewController.m -(IBAction)searchTweet:(id)sender{ ! // Add the view controllers view to the window and display. ! responseData = [[NSMutableData data] retain]; ! ! NSURLRequest *request = [NSURLRequest requestWithURL: ! [NSURL URLWithString:@"http://search.twitter.com/search.json?q=netdesign&rpp=10"]]; ! [[NSURLConnection alloc] initWithRequest:request delegate:self]; ! ! }Wednesday, October 27, 2010
  19. 19. Appendix : การดึงข้อมูล User Timeline TwitterRushViewController.m #pragma mark UserTimeLine -(IBAction)showUserTimeline:(id)sender{ ! ! [_engine getUserTimelineFor:_engine.username sinceID:0 startingAtPage:0 count:10]; } //Delegate when API return value - (void)statusesReceived:(NSArray *)statuses forRequest:(NSString *)connectionIdentifier { } ! }Wednesday, October 27, 2010
  20. 20. Appendix : การดึงข้อมูลจาก API ผ่าน MGTwitterEngine รายละเอียดของค่าที่ส่งมาจาก API แบบต่าง ๆ http://dev.twitter.com/doc MGTwitterEngine.h - (NSString *)getPublicTimeline; // statuses/public_timeline - (NSString *)getFollowedTimelineSinceID:(unsigned long)sinceID startingAtPage:(int)pageNum count:(int)count; // statuses/friends_timeline - (NSString *)getFollowedTimelineSinceID:(unsigned long)sinceID withMaximumID:(unsigned long)maxID startingAtPage:(int) pageNum count:(int)count; // statuses/friends_timeline - (NSString *)getUserTimelineFor:(NSString *)username sinceID:(unsigned long)sinceID startingAtPage:(int)pageNum count: (int)count; // statuses/user_timeline & statuses/user_timeline/user - (NSString *)getUserTimelineFor:(NSString *)username sinceID:(unsigned long)sinceID withMaximumID:(unsigned long)maxID startingAtPage:(int)pageNum count:(int)count; // statuses/user_timeline & statuses/user_timeline/user - (NSString *)getUpdate:(unsigned long)updateID; // statuses/show - (NSString *)sendUpdate:(NSString *)status; // statuses/update - (NSString *)sendUpdate:(NSString *)status inReplyTo:(unsigned long)updateID; // statuses/update - (NSString *)getRepliesStartingAtPage:(int)pageNum; // statuses/mentions - (NSString *)getRepliesSinceID:(unsigned long)sinceID startingAtPage:(int)pageNum count:(int)count; // statuses/ mentions - (NSString *)getRepliesSinceID:(unsigned long)sinceID withMaximumID:(unsigned long)maxID startingAtPage:(int)pageNum count:(int)count; // statuses/mentions - (NSString *)deleteUpdate:(unsigned long)updateID; // statuses/destroy - (NSString *)getFeaturedUsers; // statuses/features (undocumented, returns invalid JSON data)Wednesday, October 27, 2010
  21. 21. DemoWednesday, October 27, 2010

×