SlideShare uma empresa Scribd logo
1 de 21
iPhone Developer Advance Program




                              by Eakapong Kattiya
Wednesday, October 27, 2010
āļ„āļ§āļēāļĄāļĢāļđāđ‰āļžāļ·āđ‰āļ™āļāļēāļ™āļ—āļĩāđˆāļˆāđāļēāđ€āļ›āđ‡āļ™

                 - Objective-C for iPhone Programming

                 - Basic UI iPhone Programming

                 - Model View Controller

                 - XML / JSON

                 - OAuth




Wednesday, October 27, 2010
What is twitter

                    āļ—āļ§āļīāļ•āđ€āļ•āļ­āļĢāđŒ (Twitter) āļ„āļ·āļ­āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒāļ—āļĩāđˆāđƒāļŦāđ‰āļšāļĢāļīāļāļēāļĢ blog āļŠāļąāđ‰āļ™āđ† āļŦāļĢāļ·āļ­āļ—āļĩāđˆ
            āļ āļēāļĐāļēāļ­āļąāļ‡āļāļĪāļĐāđ€āļĢāļĩāļĒāļāļāļąāļ™āļ§āđˆāļē Micro-Blog āļ‹āļķāđˆāļ‡āļŠāļēāļĄāļēāļĢāļ–āđƒāļŦāđ‰āļœāļđāđ‰āđƒāļŠāđ‰āļŠāđˆāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ
            āļ‚āļ­āļ‡āļ•āļ™āđ€āļ­āļ‡ āđƒāļŦāđ‰āđ€āļžāļ·āđˆāļ­āļ™ āđ† āļ—āļĩāđˆāļ•āļīāļ”āļ•āļēāļĄ twitter āļ‚āļ­āļ‡āđ€āļĢāļēāļ­āļĒāļđāđˆāļ­āđˆāļēāļ™āđ„āļ”āđ‰ āđāļĨāļ°āđ€āļĢāļē
            āđ€āļ­āļ‡āļāđ‡āļŠāļēāļĄāļēāļĢāļ–āļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ‚āļ­āļ‡āđ€āļžāļ·āđˆāļ­āļ™ āļŦāļĢāļ·āļ­āļ„āļ™āļ—āļĩāđˆāđ€āļĢāļēāļ•āļīāļ”āļ•āļēāļĄāđ€āļ‚āļēāļ­āļĒāļđāđˆāđ„āļ”āđ‰
            āļ‹āļķāđˆāļ‡ twitter āļāđ‡āļ–āļ·āļ­āđ„āļ”āđ‰āļ§āđˆāļēāđ€āļ›āđ‡āļ™āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒāļ›āļĢāļ°āđ€āļ āļ— social media āļ”āđ‰āļ§āļĒāđ€āļŠāđˆāļ™āļāļąāļ™


                 āđƒāļ™ āļĢāļđāļ›āđāļšāļšāļ‚āļ­āļ‡ twitter āļ™āļĩāđ‰ āļ—āļĩāđˆāđ€āļĢāļĩāļĒāļāļ§āđˆāļēāđ€āļ›āđ‡āļ™ blog āļŠāļąāđ‰āļ™āļāđ‡āđ€āļžāļĢāļēāļ°āļ§āđˆāļē
            twitter āđƒāļŦāđ‰āđ€āļ‚āļĩāļĒāļ™āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāđ„āļ”āđ‰āļ„āļĢāļąāđ‰āļ‡āļĨāļ°āđ„āļĄāđˆāđ€āļāļīāļ™ 140 āļ•āļąāļ§āļ­āļąāļāļĐāļĢ āļ‹āļķāđˆāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ
            āļ™āļĩāđ‰āđ€āļĄāļ·āđˆāļ­āđ€āļ‚āļĩāļĒāļ™āđāļĨāđ‰āļ§āļˆāļ°āđ„āļ›āđāļŠāļ”āļ‡āļ­āļĒāļđāđˆāđƒāļ™āļŦāļ™āđ‰āļē prole āļ‚āļ­āļ‡āļœāļđāđ‰āđ€āļ‚āļĩāļĒāļ™āļ™āļąāđˆāļ™āđ€āļ­āļ‡ āđāļĨāļ°
            āļˆāļ°āļ—āđāļēāļāļēāļĢāļŠāđˆāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ™āļĩāđ‰āđ„āļ›āļĒāļąāļ‡āļŠāļĄāļēāļŠāļīāļāļ—āļĩāđˆāļ•āļīāļ”āļ•āļēāļĄāļœāļđāđ‰āđ€āļ‚āļĩāļĒāļ™āļ„āļ™āļ™āļąāđ‰āļ™āļ­āļĒāļđāđˆ
            (follower) āđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī
                  




                                                          āļ—āļĩāđˆāļĄāļē http://beta.i3.in.th/content/view/2094


Wednesday, October 27, 2010
What is twitter

                    āđāļ•āđˆāļŠāļīāđˆāļ‡āļŦāļ™āļķāđˆāļ‡āļ—āļĩāđˆāļĄāļēāļŠāđˆāļ§āļĒāđƒāļŦāđ‰ Twitter āļĄāļĩāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒ āđāļĨāļ°āļŠāļ™āļļāļāļĄāļēāļāļ‚āļķāđ‰āļ™ āļāđ‡
            āļ„āļ·āļ­ āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āļ•āļīāļ”āļ•āļēāļĄ (Follow) āļ„āļ™āļ­āļ·āđˆāļ™āđ† āļ—āļĩāđˆāđ€āļ‚āļēāđ€āļ‚āļĩāļĒāļ™āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļĨāļ‡āđ„āļ›
            āđƒāļ™ Twitter āļ‚āļ­āļ‡āđ€āļ‚āļēāđ„āļ”āđ‰ āļ§āđˆāļēāđ€āļ‚āļēāļ„āļ™āļ™āļąāđ‰āļ™āļāđāļēāļĨāļąāļ‡āļ—āđāļēāļ­āļ°āđ„āļĢāļ­āļĒāļđāđˆ āđ‚āļ”āļĒāđ€āļĄāļ·āđˆāļ­āļ„āļļāļ“
            āļ•āļīāļ”āļ•āļēāļĄ (Follow) āđ€āļ‚āļēāđāļĨāđ‰āļ§ āđ€āļĄāļ·āđˆāļ­āļ„āļ™āļ™āļąāđ‰āļ™āđ€āļ‚āļēāļ—āđāļēāļ­āļ°āđ„āļĢāđāļĨāļ°āļžāļīāļĄāļžāđŒāļ­āļ°āđ„āļĢāļĨāļ‡āđ„āļ›
            āđƒāļ™ Twitter āļ„āļļāļ“āļāđ‡āđ„āļ”āđ‰āļĢāļąāļšāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāđ€āļŦāļĨāđˆāļēāļ™āļąāđ‰āļ™āļ”āđ‰āļ§āļĒāđ„āļ›āļžāļĢāđ‰āļ­āļĄāđ† āļāļąāļ™ āđāļĨāļ°āļāđ‡
            āļŠāļēāļĄāļēāļĢāļ–āļ•āļīāļ”āļ•āļēāļĄāđ„āļ”āđ‰āļ—āļĩāļĨāļ°āļŦāļĨāļēāļĒāđ† āļ„āļ™ āļ‹āļķāđˆāļ‡āļāđ‡āļˆāļ°āļ—āđāļēāđƒāļŦāđ‰āļ„āļļāļ“āļ—āļĢāļēāļšāļ§āđˆāļēāđ€āļ‚āļēāđ€āļŦāļĨāđˆāļē
            āļ™āļąāđ‰āļ™āļāđāļēāļĨāļąāļ‡āļ—āđāļēāļ­āļ°āđ„āļĢāļ­āļĒāļđāđˆāđƒāļ™āļ‚āļ“āļ°āļ™āļąāđ‰āļ™āļ—āļąāļ™āļ—āļĩ




                                                        āļ—āļĩāđˆāļĄāļē http://beta.i3.in.th/content/view/2094


Wednesday, October 27, 2010
āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļ‚āļ­āļ‡ 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/2094


Wednesday, October 27, 2010
āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļ‚āļ­āļ‡ 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/2094




Wednesday, October 27, 2010
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
Wednesday, October 27, 2010
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-iPhone




Wednesday, October 27, 2010
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
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
Step 3: Declare the NSXMLParserDelegate
             āļ—āđāļēāļāļēāļĢāļ‚āļˆāļąāļ” warning āļ—āļĩāđˆāļĄāļĩāļ”āđ‰āļ§āļĒāļāļēāļĢāļ›āļĢāļ°āļāļēāļĻ NSXMLParserDelegate
             āđƒāļŦāđ‰āļāļąāļš Class MGTwitterXMLParser āđāļĨāļ° MGTwitterXMLParser

             āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāļĄāļĩāļāļēāļĢāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰ NSXMLParser āđƒāļ™ Class āļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āļ™āļĩāđ‰


 @interface MGTwitterStatusesParser : MGTwitterXMLParser <NSXMLParserDelegate> {



 @interface MGTwitterXMLParser : NSObject <NSXMLParserDelegate> {




Wednesday, October 27, 2010
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;

      @end




Wednesday, October 27, 2010
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
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
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
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
Appendix : Search āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļšāļ™ Tweeter



                                TwitterRushViewController.m
      -(IBAction)searchTweet:(id)sender{
      ! // Add the view controller's 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
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
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
Demo




Wednesday, October 27, 2010

Mais conteÚdo relacionado

Destaque

Pristine sun teaser 1Q 2015
Pristine sun teaser 1Q 2015Pristine sun teaser 1Q 2015
Pristine sun teaser 1Q 2015Troy Helming
 
(1 July 2013) iOS Basic Development Day 5 - Submit to App Store
(1 July 2013) iOS Basic Development Day 5 - Submit to App Store(1 July 2013) iOS Basic Development Day 5 - Submit to App Store
(1 July 2013) iOS Basic Development Day 5 - Submit to App StoreEakapong Kattiya
 
Android basic 4 Navigation Drawer
Android basic 4 Navigation DrawerAndroid basic 4 Navigation Drawer
Android basic 4 Navigation DrawerEakapong Kattiya
 
Android basic 2 UI Design
Android basic 2 UI DesignAndroid basic 2 UI Design
Android basic 2 UI DesignEakapong Kattiya
 
Evrdi : Social Diary ( iOS and Android )
Evrdi : Social Diary ( iOS and Android )Evrdi : Social Diary ( iOS and Android )
Evrdi : Social Diary ( iOS and Android )Eakapong Kattiya
 
Android basic 3 Dialogs
Android basic 3 DialogsAndroid basic 3 Dialogs
Android basic 3 DialogsEakapong Kattiya
 
Android Basic Development Day 1 Introduction & ADT
Android Basic Development Day 1 Introduction & ADTAndroid Basic Development Day 1 Introduction & ADT
Android Basic Development Day 1 Introduction & ADTEakapong Kattiya
 
(31 July 2013) iOS Basic Development Day 2 Human interface design
(31 July 2013) iOS Basic Development Day 2 Human interface design (31 July 2013) iOS Basic Development Day 2 Human interface design
(31 July 2013) iOS Basic Development Day 2 Human interface design Eakapong Kattiya
 

Destaque (8)

Pristine sun teaser 1Q 2015
Pristine sun teaser 1Q 2015Pristine sun teaser 1Q 2015
Pristine sun teaser 1Q 2015
 
(1 July 2013) iOS Basic Development Day 5 - Submit to App Store
(1 July 2013) iOS Basic Development Day 5 - Submit to App Store(1 July 2013) iOS Basic Development Day 5 - Submit to App Store
(1 July 2013) iOS Basic Development Day 5 - Submit to App Store
 
Android basic 4 Navigation Drawer
Android basic 4 Navigation DrawerAndroid basic 4 Navigation Drawer
Android basic 4 Navigation Drawer
 
Android basic 2 UI Design
Android basic 2 UI DesignAndroid basic 2 UI Design
Android basic 2 UI Design
 
Evrdi : Social Diary ( iOS and Android )
Evrdi : Social Diary ( iOS and Android )Evrdi : Social Diary ( iOS and Android )
Evrdi : Social Diary ( iOS and Android )
 
Android basic 3 Dialogs
Android basic 3 DialogsAndroid basic 3 Dialogs
Android basic 3 Dialogs
 
Android Basic Development Day 1 Introduction & ADT
Android Basic Development Day 1 Introduction & ADTAndroid Basic Development Day 1 Introduction & ADT
Android Basic Development Day 1 Introduction & ADT
 
(31 July 2013) iOS Basic Development Day 2 Human interface design
(31 July 2013) iOS Basic Development Day 2 Human interface design (31 July 2013) iOS Basic Development Day 2 Human interface design
(31 July 2013) iOS Basic Development Day 2 Human interface design
 

Semelhante a Iphone developer advance twitter

āļšāļ—āļ—āļĩāđˆ2
āļšāļ—āļ—āļĩāđˆ2āļšāļ—āļ—āļĩāđˆ2
āļšāļ—āļ—āļĩāđˆ2dargonbail
 
āļšāļ—āļ—āļĩāđˆ 2
āļšāļ—āļ—āļĩāđˆ 2āļšāļ—āļ—āļĩāđˆ 2
āļšāļ—āļ—āļĩāđˆ 2teeraratWI
 
āļ„āļđāđˆāļĄāļ·āļ­ Twitter V2
āļ„āļđāđˆāļĄāļ·āļ­ Twitter V2āļ„āļđāđˆāļĄāļ·āļ­ Twitter V2
āļ„āļđāđˆāļĄāļ·āļ­ Twitter V2Pakornkrits
 
āļšāļ—āļ—āļĩāđˆ 2
āļšāļ—āļ—āļĩāđˆ 2āļšāļ—āļ—āļĩāđˆ 2
āļšāļ—āļ—āļĩāđˆ 2teerarat55
 
āļšāļ—āļ—āļĩāđˆ 2
āļšāļ—āļ—āļĩāđˆ 2āļšāļ—āļ—āļĩāđˆ 2
āļšāļ—āļ—āļĩāđˆ 2teerarat55
 
āļšāļ—āļ—āļĩāđˆ 2
āļšāļ—āļ—āļĩāđˆ 2āļšāļ—āļ—āļĩāđˆ 2
āļšāļ—āļ—āļĩāđˆ 2teeraratWI
 
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡Kot āļŠāļļāļĢāļĻāļąāļāļ”āļīāđŒ
 
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡Kot āļŠāļļāļĢāļĻāļąāļāļ”āļīāđŒ
 
āļšāļ—āļ—āļĩāđˆ2
āļšāļ—āļ—āļĩāđˆ2āļšāļ—āļ—āļĩāđˆ2
āļšāļ—āļ—āļĩāđˆ2Tangkwa Tom
 
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡Chi Cha Pui Fai
 
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡Chi Cha Pui Fai
 
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡Chi Cha Pui Fai
 
Internet-Social Media
Internet-Social MediaInternet-Social Media
Internet-Social MediaJatupon Panjoi
 
Onettemplate
OnettemplateOnettemplate
Onettemplatechycindy
 

Semelhante a Iphone developer advance twitter (20)

āļšāļ—āļ—āļĩāđˆ 2 āļ—āļ§āļĩāļŠāļąāļĒ
āļšāļ—āļ—āļĩāđˆ 2 āļ—āļ§āļĩāļŠāļąāļĒāļšāļ—āļ—āļĩāđˆ 2 āļ—āļ§āļĩāļŠāļąāļĒ
āļšāļ—āļ—āļĩāđˆ 2 āļ—āļ§āļĩāļŠāļąāļĒ
 
āļšāļ—āļ—āļĩāđˆ2
āļšāļ—āļ—āļĩāđˆ2āļšāļ—āļ—āļĩāđˆ2
āļšāļ—āļ—āļĩāđˆ2
 
āļšāļ—āļ—āļĩāđˆ 2
āļšāļ—āļ—āļĩāđˆ 2āļšāļ—āļ—āļĩāđˆ 2
āļšāļ—āļ—āļĩāđˆ 2
 
āļ„āļđāđˆāļĄāļ·āļ­ Twitter V2
āļ„āļđāđˆāļĄāļ·āļ­ Twitter V2āļ„āļđāđˆāļĄāļ·āļ­ Twitter V2
āļ„āļđāđˆāļĄāļ·āļ­ Twitter V2
 
āļšāļ—āļ—āļĩāđˆ 2
āļšāļ—āļ—āļĩāđˆ 2āļšāļ—āļ—āļĩāđˆ 2
āļšāļ—āļ—āļĩāđˆ 2
 
āļšāļ—āļ—āļĩāđˆ 2
āļšāļ—āļ—āļĩāđˆ 2āļšāļ—āļ—āļĩāđˆ 2
āļšāļ—āļ—āļĩāđˆ 2
 
āļšāļ—āļ—āļĩāđˆ222222+++
āļšāļ—āļ—āļĩāđˆ222222+++āļšāļ—āļ—āļĩāđˆ222222+++
āļšāļ—āļ—āļĩāđˆ222222+++
 
āļšāļ—āļ—āļĩāđˆ 2
āļšāļ—āļ—āļĩāđˆ 2āļšāļ—āļ—āļĩāđˆ 2
āļšāļ—āļ—āļĩāđˆ 2
 
āļšāļ—āļ—āļĩāđˆ 2
āļšāļ—āļ—āļĩāđˆ 2āļšāļ—āļ—āļĩāđˆ 2
āļšāļ—āļ—āļĩāđˆ 2
 
3 3
3 33 3
3 3
 
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
 
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
 
āļšāļ—āļ—āļĩāđˆ2
āļšāļ—āļ—āļĩāđˆ2āļšāļ—āļ—āļĩāđˆ2
āļšāļ—āļ—āļĩāđˆ2
 
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
 
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
 
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
02 āļšāļ—āļ—āļĩāđˆ 2-āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
 
āļšāļ—āļ—āļĩāđˆ2
āļšāļ—āļ—āļĩāđˆ2 āļšāļ—āļ—āļĩāđˆ2
āļšāļ—āļ—āļĩāđˆ2
 
Wordpress
WordpressWordpress
Wordpress
 
Internet-Social Media
Internet-Social MediaInternet-Social Media
Internet-Social Media
 
Onettemplate
OnettemplateOnettemplate
Onettemplate
 

Iphone developer advance twitter

  • 1. iPhone Developer Advance Program by Eakapong Kattiya Wednesday, October 27, 2010
  • 2. āļ„āļ§āļēāļĄāļĢāļđāđ‰āļžāļ·āđ‰āļ™āļāļēāļ™āļ—āļĩāđˆāļˆāđāļēāđ€āļ›āđ‡āļ™ - Objective-C for iPhone Programming - Basic UI iPhone Programming - Model View Controller - XML / JSON - OAuth Wednesday, October 27, 2010
  • 3. What is twitter         āļ—āļ§āļīāļ•āđ€āļ•āļ­āļĢāđŒ (Twitter) āļ„āļ·āļ­āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒāļ—āļĩāđˆāđƒāļŦāđ‰āļšāļĢāļīāļāļēāļĢ blog āļŠāļąāđ‰āļ™āđ† āļŦāļĢāļ·āļ­āļ—āļĩāđˆ āļ āļēāļĐāļēāļ­āļąāļ‡āļāļĪāļĐāđ€āļĢāļĩāļĒāļāļāļąāļ™āļ§āđˆāļē Micro-Blog āļ‹āļķāđˆāļ‡āļŠāļēāļĄāļēāļĢāļ–āđƒāļŦāđ‰āļœāļđāđ‰āđƒāļŠāđ‰āļŠāđˆāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ āļ‚āļ­āļ‡āļ•āļ™āđ€āļ­āļ‡ āđƒāļŦāđ‰āđ€āļžāļ·āđˆāļ­āļ™ āđ† āļ—āļĩāđˆāļ•āļīāļ”āļ•āļēāļĄ twitter āļ‚āļ­āļ‡āđ€āļĢāļēāļ­āļĒāļđāđˆāļ­āđˆāļēāļ™āđ„āļ”āđ‰ āđāļĨāļ°āđ€āļĢāļē āđ€āļ­āļ‡āļāđ‡āļŠāļēāļĄāļēāļĢāļ–āļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ‚āļ­āļ‡āđ€āļžāļ·āđˆāļ­āļ™ āļŦāļĢāļ·āļ­āļ„āļ™āļ—āļĩāđˆāđ€āļĢāļēāļ•āļīāļ”āļ•āļēāļĄāđ€āļ‚āļēāļ­āļĒāļđāđˆāđ„āļ”āđ‰ āļ‹āļķāđˆāļ‡ twitter āļāđ‡āļ–āļ·āļ­āđ„āļ”āđ‰āļ§āđˆāļēāđ€āļ›āđ‡āļ™āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒāļ›āļĢāļ°āđ€āļ āļ— social media āļ”āđ‰āļ§āļĒāđ€āļŠāđˆāļ™āļāļąāļ™      āđƒāļ™ āļĢāļđāļ›āđāļšāļšāļ‚āļ­āļ‡ twitter āļ™āļĩāđ‰ āļ—āļĩāđˆāđ€āļĢāļĩāļĒāļāļ§āđˆāļēāđ€āļ›āđ‡āļ™ blog āļŠāļąāđ‰āļ™āļāđ‡āđ€āļžāļĢāļēāļ°āļ§āđˆāļē twitter āđƒāļŦāđ‰āđ€āļ‚āļĩāļĒāļ™āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāđ„āļ”āđ‰āļ„āļĢāļąāđ‰āļ‡āļĨāļ°āđ„āļĄāđˆāđ€āļāļīāļ™ 140 āļ•āļąāļ§āļ­āļąāļāļĐāļĢ āļ‹āļķāđˆāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ āļ™āļĩāđ‰āđ€āļĄāļ·āđˆāļ­āđ€āļ‚āļĩāļĒāļ™āđāļĨāđ‰āļ§āļˆāļ°āđ„āļ›āđāļŠāļ”āļ‡āļ­āļĒāļđāđˆāđƒāļ™āļŦāļ™āđ‰āļē prole āļ‚āļ­āļ‡āļœāļđāđ‰āđ€āļ‚āļĩāļĒāļ™āļ™āļąāđˆāļ™āđ€āļ­āļ‡ āđāļĨāļ° āļˆāļ°āļ—āđāļēāļāļēāļĢāļŠāđˆāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ™āļĩāđ‰āđ„āļ›āļĒāļąāļ‡āļŠāļĄāļēāļŠāļīāļāļ—āļĩāđˆāļ•āļīāļ”āļ•āļēāļĄāļœāļđāđ‰āđ€āļ‚āļĩāļĒāļ™āļ„āļ™āļ™āļąāđ‰āļ™āļ­āļĒāļđāđˆ (follower) āđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī        āļ—āļĩāđˆāļĄāļē http://beta.i3.in.th/content/view/2094 Wednesday, October 27, 2010
  • 4. What is twitter         āđāļ•āđˆāļŠāļīāđˆāļ‡āļŦāļ™āļķāđˆāļ‡āļ—āļĩāđˆāļĄāļēāļŠāđˆāļ§āļĒāđƒāļŦāđ‰ Twitter āļĄāļĩāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒ āđāļĨāļ°āļŠāļ™āļļāļāļĄāļēāļāļ‚āļķāđ‰āļ™ āļāđ‡ āļ„āļ·āļ­ āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āļ•āļīāļ”āļ•āļēāļĄ (Follow) āļ„āļ™āļ­āļ·āđˆāļ™āđ† āļ—āļĩāđˆāđ€āļ‚āļēāđ€āļ‚āļĩāļĒāļ™āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļĨāļ‡āđ„āļ› āđƒāļ™ Twitter āļ‚āļ­āļ‡āđ€āļ‚āļēāđ„āļ”āđ‰ āļ§āđˆāļēāđ€āļ‚āļēāļ„āļ™āļ™āļąāđ‰āļ™āļāđāļēāļĨāļąāļ‡āļ—āđāļēāļ­āļ°āđ„āļĢāļ­āļĒāļđāđˆ āđ‚āļ”āļĒāđ€āļĄāļ·āđˆāļ­āļ„āļļāļ“ āļ•āļīāļ”āļ•āļēāļĄ (Follow) āđ€āļ‚āļēāđāļĨāđ‰āļ§ āđ€āļĄāļ·āđˆāļ­āļ„āļ™āļ™āļąāđ‰āļ™āđ€āļ‚āļēāļ—āđāļēāļ­āļ°āđ„āļĢāđāļĨāļ°āļžāļīāļĄāļžāđŒāļ­āļ°āđ„āļĢāļĨāļ‡āđ„āļ› āđƒāļ™ Twitter āļ„āļļāļ“āļāđ‡āđ„āļ”āđ‰āļĢāļąāļšāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāđ€āļŦāļĨāđˆāļēāļ™āļąāđ‰āļ™āļ”āđ‰āļ§āļĒāđ„āļ›āļžāļĢāđ‰āļ­āļĄāđ† āļāļąāļ™ āđāļĨāļ°āļāđ‡ āļŠāļēāļĄāļēāļĢāļ–āļ•āļīāļ”āļ•āļēāļĄāđ„āļ”āđ‰āļ—āļĩāļĨāļ°āļŦāļĨāļēāļĒāđ† āļ„āļ™ āļ‹āļķāđˆāļ‡āļāđ‡āļˆāļ°āļ—āđāļēāđƒāļŦāđ‰āļ„āļļāļ“āļ—āļĢāļēāļšāļ§āđˆāļēāđ€āļ‚āļēāđ€āļŦāļĨāđˆāļē āļ™āļąāđ‰āļ™āļāđāļēāļĨāļąāļ‡āļ—āđāļēāļ­āļ°āđ„āļĢāļ­āļĒāļđāđˆāđƒāļ™āļ‚āļ“āļ°āļ™āļąāđ‰āļ™āļ—āļąāļ™āļ—āļĩ āļ—āļĩāđˆāļĄāļē http://beta.i3.in.th/content/view/2094 Wednesday, October 27, 2010
  • 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/2094 Wednesday, October 27, 2010
  • 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/2094 Wednesday, October 27, 2010
  • 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
  • 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-iPhone Wednesday, October 27, 2010
  • 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. 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. 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. 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; @end Wednesday, October 27, 2010
  • 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. 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. 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. 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. Appendix : Search āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļšāļ™ Tweeter TwitterRushViewController.m -(IBAction)searchTweet:(id)sender{ ! // Add the view controller's 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. 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. 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