<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7901857616222060090</id><updated>2024-11-01T18:51:54.076+07:00</updated><category term="Titanium Mobile"/><category term="Titanium Studio"/><category term="ios"/><category term="Mobile Developer"/><category term="android"/><category term="iphone"/><category term="Facebook"/><category term="Graph API"/><category term="tabgroup"/><category term="Apple"/><category term="CommonJS"/><category term="Facebook API"/><category term="JSON"/><category term="Navigator Group"/><category term="OS X"/><category term="Picker"/><category term="Titanium.App"/><category term="Update"/><category term="badge"/><category term="dialog"/><category term="ipad"/><category term="scrollview"/><category term="Action Bar"/><category term="Alloy Framework"/><category term="Appcelator"/><category term="Appcelerator Titanium"/><category term="Barcode Reader"/><category term="Basic Picker"/><category term="Camera"/><category term="Contact"/><category term="Contact Picker"/><category term="Dashboard Item"/><category term="Dashboard View"/><category term="Event"/><category term="Facebook Development"/><category term="HTTPClient"/><category term="Handhelds"/><category term="Local Database"/><category term="Local Storage"/><category term="Login with Facebook"/><category term="MVC"/><category term="Menu"/><category term="Mobile Database"/><category term="Modal"/><category term="Multi Column"/><category term="Multitasking"/><category term="Post Image To Wall"/><category term="Post Message"/><category term="QR Code"/><category term="RESFul"/><category term="REST API"/><category term="SOAP"/><category term="SQLite"/><category term="Smartphones"/><category term="TableView"/><category term="TiBar"/><category term="Titanium Mobile 3.0"/><category term="Titanium SDK"/><category term="Titanium SDK 2.1.4"/><category term="Titanium SDK 3.0"/><category term="Titanium SDK 3.1.0"/><category term="Titanium.Network.createHTTPClient"/><category term="Transition"/><category term="View"/><category term="Window"/><category term="Windows 7"/><category term="Xcode"/><category term="alert dialog"/><category term="and"/><category term="device"/><category term="imageview"/><category term="mapview"/><category term="photo gallery"/><category term="scrollableview"/><category term="webview"/><title type='text'>Mobidevthai</title><subtitle type='html'>เขียนโปรแกรมสำหรับ iOS และ Android แบบ Cross - Platform ด้วย Javascript Framwork</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>50</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-7966726933743339015</id><published>2013-10-10T23:11:00.002+07:00</published><updated>2013-10-10T23:15:27.206+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Barcode Reader"/><category scheme="http://www.blogger.com/atom/ns#" term="ios"/><category scheme="http://www.blogger.com/atom/ns#" term="ipad"/><category scheme="http://www.blogger.com/atom/ns#" term="iphone"/><category scheme="http://www.blogger.com/atom/ns#" term="QR Code"/><category scheme="http://www.blogger.com/atom/ns#" term="TiBar"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><title type='text'>เขียนโปรแกรมอ่าน  QR Code, Barcode ด้วย Titanium Mobile [iOS]</title><content type='html'>หลังจากหายจากการเขียนบทความไปนาน วันนี้กลับมาเขียนใหม่อีกครั้งพร้อมกับสิ่งที่เราเริ่มจะคุ้นเคยกับมัน &quot;QR Code&quot; โดย QR Code นี้ถูกใช้งานในที่ต่าง ๆ มากมาย ไม่ว่าจะเป็นสิ่งที่เอาไว้ใช้ Add Friend ของ Application ชื่อดังอย่าง &quot;Line&quot; หรือเอาไว้ใช้งานเพื่อทำการ Download Application ทั้งบน iOS และ Android ในบทความนี้จะแนะนำวิธีการเขียนโปรแกรมเพื่อทำการอ่าน QR Code นี้กันครับ&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVCHZqKujUbkXI34Fc2e1V971fwQd6hTPL6hsSAUV7gC7SAobnolfHGTziqbsrhB9bOY82eNB6B50oz6enfmt60LGvW-pmBoHiq9kapP2esivsIzqBxuZ3GjiBfwP8o48Rd71vi5NiYlY0/s1600/chart-1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVCHZqKujUbkXI34Fc2e1V971fwQd6hTPL6hsSAUV7gC7SAobnolfHGTziqbsrhB9bOY82eNB6B50oz6enfmt60LGvW-pmBoHiq9kapP2esivsIzqBxuZ3GjiBfwP8o48Rd71vi5NiYlY0/s1600/chart-1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;QR Code คืออะไร ?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
QR Code หรือที่มีชื่อเรียกอีกชื่อหนึ่งว่า บาร์โค้ด 2 มิติ คือ รหัสชนิดหนึ่งซึ่งสามารถเก็บข้อมูลต่าง ๆ &amp;nbsp;เช่น ชื่อ , ราคาของสินค้า , &amp;nbsp;เบอร์โทรศัพท์ หรือแม้กระทั่งชื่อเว็บไซต์ โดยเป็นการพัฒนาต่อยอดมาจาก บาร์โค้ด โดย&amp;nbsp;บริษัท Denso-Wave ตั้งแต่ปี 1994&amp;nbsp;และได้จดทะเบียนลิขสิทธิ์ชื่อ &quot;QR Code&quot; แล้วทั้งในญี่ปุ่น และทั่วโลก ผู้คิดค้นที่มุ่งเน้นให้สามารถถูกอ่านได้อย่างรวดเร็ว โดยการอ่าน QR Code นิยมใช้กับ Smart Phone ทั่ว ๆ ไป&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
หลังจากที่เรารู้จักกับเจ้า QR Code ไปแล้ว ก็ถึงเวลาที่เราจะมาเขียนโปรแกรมเพื่อทำการอ่านเจ้า QR Code นี้กันแล้วหล่ะครับ โดย Code ที่เขียนในบทความนี้จะสามารถใช้งานได้กับ iOS เท่านั้นเนื่องจากตัว ที่ผมใช้นั้นสามารถใช้งานได้กับ iOS เพียงอย่างเดียว (ในส่วนของ Android จะพยายามหาตัวอย่างที่ใช้งานง่าย ๆ มาให้ดูกันภายหลังนะครับ)&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
สิ่งที่เราต้องมีครับ&amp;nbsp;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Titanium Mobile SDK 1.4.2 (ตอนนี้ 3.X แล้ว)&lt;/li&gt;
&lt;li&gt;iOS SDK 4.1 (ตอนนี้ไป 5.0)&lt;/li&gt;
&lt;li&gt;iPhone 3GS หรือสูงกว่า (ตอนนี้คงเป็น iPhone 5S, C)&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
ในขั้นตอนแรกนั้นเราก็จะต้องไปทำการ Download Module ที่มีชื่อว่า &amp;nbsp;&lt;a href=&quot;http://code.google.com/p/tibar/downloads/detail?name=tibar-iphone-0.4.2.zip&amp;amp;can=2&amp;amp;q=&quot; target=&quot;_blank&quot;&gt;TiBar&lt;/a&gt; มาก่อนครับ เมื่อทำการ Dowload แล้วให้ทำการ &amp;nbsp;Copy ไปยัง&amp;nbsp;/Library/Application Support/Titanium &lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSI4mLDX6xXpz4NyhuTJC5whgRPCSAtENZ22fX5QGPTEk2xGRhI9dGn5W-rLtJVVLOv2QUv8N9Nz2aoO6MI-Fqc1tGftjPtPX0haTqII1ZpaHmdDF4tZsHK9FL9RoqQ6jt58hVh8kIlSrl/s1600/Screen+Shot+2556-10-10+at+9.53.22+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSI4mLDX6xXpz4NyhuTJC5whgRPCSAtENZ22fX5QGPTEk2xGRhI9dGn5W-rLtJVVLOv2QUv8N9Nz2aoO6MI-Fqc1tGftjPtPX0haTqII1ZpaHmdDF4tZsHK9FL9RoqQ6jt58hVh8kIlSrl/s1600/Screen+Shot+2556-10-10+at+9.53.22+PM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
เมื่อเราได้ทุกอย่างแล้วเรามาเริ่มกันเลยครับโดยเริ่มจากการสร้าง Project ใน Titanium Mobile ครับ จากนั้นเราก็เปิดไฟล์ที่มีชื่อว่า &amp;nbsp;tiapp.xml ขึ้นมาครับ ในส่วนของ Modules กดที่ปุ่ม &amp;nbsp;&quot;+&quot; แล้วเลือก tibar ครับ&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipnrqX2MaS8f9N67O_T1CN_dkK9sE66D0rfKcImE-VExcN_wT8hfl8ZA361f4Cx2KjCOpdnuTeVV3woa1dSBGuYDNJXJEH4cOJM0z8o_JtTlM7AIjwfH_6Wyp_5euRJm0QkqgZZGKvOdws/s1600/Screen+Shot+2556-10-10+at+10.01.08+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;255&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipnrqX2MaS8f9N67O_T1CN_dkK9sE66D0rfKcImE-VExcN_wT8hfl8ZA361f4Cx2KjCOpdnuTeVV3woa1dSBGuYDNJXJEH4cOJM0z8o_JtTlM7AIjwfH_6Wyp_5euRJm0QkqgZZGKvOdws/s320/Screen+Shot+2556-10-10+at+10.01.08+PM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
ทำการ Save ไฟล์ tiapp.xml ครับ จากนั้นก็เปิดไฟล์ app.js ขึ้นมาครับ แล้วก็เอา Code ด้านล่างนี้ลงไปได้เลยครับ&lt;/div&gt;
&lt;span style=&quot;font-family: monospace; text-align: left;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;code&gt;var win = Titanium.UI.createWindow({&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;backgroundColor:&#39;#fff&#39;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var TiBar = require(&#39;tibar&#39;);&lt;br /&gt;
var label = Titanium.UI.createLabel({&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;text:&#39;อ่าน QR Code ด้วย Titanium Mobile&#39;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;textAlign:&#39;center&#39;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;width:&#39;auto&#39;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var button = Ti.UI.createButton({&lt;br /&gt;
&amp;nbsp; &amp;nbsp; title: &quot;Scan barcode&quot;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; height:50,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; width:250,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; bottom:20&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
button.addEventListener(&#39;click&#39;, function(){&lt;br /&gt;
TiBar.scan({&lt;br /&gt;
&amp;nbsp; &amp;nbsp;// simple configuration for iPhone simulator&lt;br /&gt;
&amp;nbsp; &amp;nbsp;configure: {&lt;br /&gt;
&amp;nbsp; &amp;nbsp;classType: &quot;ZBarReaderController&quot;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sourceType: &quot;Album&quot;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cameraMode: &quot;Default&quot;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp;symbol:{&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;QR-Code&quot;:true,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp;},&lt;br /&gt;
&amp;nbsp; &amp;nbsp;success:function(data){&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; if(data &amp;amp;&amp;amp; data.barcode){&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; Ti.UI.createAlertDialog({&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;title: &quot;Scan result&quot;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;message: &quot;Barcode: &quot; + data.barcode + &quot; Symbology:&quot; + data.symbology&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; }).show();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp;},&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cancel:function(){&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; Ti.API.info(&#39;TiBar cancel callback!&#39;);&lt;br /&gt;
&amp;nbsp; &amp;nbsp;},&lt;br /&gt;
&amp;nbsp; &amp;nbsp;error:function(){&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; Ti.API.info(&#39;TiBar error callback!&#39;);&lt;br /&gt;
&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp; });        &lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
win.add(label);&lt;br /&gt;
win.add(button);&lt;br /&gt;
&lt;br /&gt;
win.open();&lt;br /&gt;
&lt;/code&gt;&lt;/div&gt;
&lt;br /&gt;
ทำการัน &amp;nbsp;Application ครับ ก็จะพบกัน Error แบบนี้ครับ&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNOy2NxlSlQvUqCO3IEoeh294O5oBQ8I9JlM3Dt5Ky2GfYURU0fFCnE-Bx0jIwSZdem6wYPbf2BHyvk18DK-NXMUQUq55KLI9W_83Ixz3OMa6SUd9nRMpmEkiNKyH7nO9JFqkCxJsn7_eh/s1600/Screen+Shot+2556-10-10+at+10.23.05+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNOy2NxlSlQvUqCO3IEoeh294O5oBQ8I9JlM3Dt5Ky2GfYURU0fFCnE-Bx0jIwSZdem6wYPbf2BHyvk18DK-NXMUQUq55KLI9W_83Ixz3OMa6SUd9nRMpmEkiNKyH7nO9JFqkCxJsn7_eh/s1600/Screen+Shot+2556-10-10+at+10.23.05+PM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
แต่ไม่ต้องตกใจไปครับ ให้เราเปิด ไฟล์ที่เรา Build ได้จาก Titanium ใน Xcode ครับ โดยตัวที่เราจะเปิดนั้นจะอยู่ที่&amp;nbsp;[project folder]/build/iphone/*.xcodeproj ตามภาพ&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmbkkhGW4miTUCJs_HYvgN8ByzB4CJBlREJeh7go4Y1FCBPan-mLhebCTJKXQ24Oz_Igu9CG4T-0rwHZmo0obywE5xKiTIXtPBq3qfE98srJbBg1zQ8iUpX7kGtpDg2ltDrcsQI3ommee-/s1600/Screen+Shot+2556-10-10+at+10.28.15+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmbkkhGW4miTUCJs_HYvgN8ByzB4CJBlREJeh7go4Y1FCBPan-mLhebCTJKXQ24Oz_Igu9CG4T-0rwHZmo0obywE5xKiTIXtPBq3qfE98srJbBg1zQ8iUpX7kGtpDg2ltDrcsQI3ommee-/s1600/Screen+Shot+2556-10-10+at+10.28.15+PM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
เมื่อ Xcode ถูกเปิดขึ้นมาแล้วให้เลือกที่ Project แล้วเลื่อนลงมาด้านล่างจะพบกับ Linked Frameworks and Libraies กดที่ปุ่ม &quot;+&quot;​ ข้างล่าง&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoVov94rIp3yYe5V-5VQWkavALTTPVwt-kKUEUEL6nLjqEJsr8yzQkvSq26ovxuPDiWMFaQWNY4TkIXqM0R3yigpActyuT9DC178ShY9dxHVbq5rc4ktn2Zr-5juEhx9gF9hgP8kJgEefw/s1600/Screen+Shot+2556-10-10+at+10.30.43+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoVov94rIp3yYe5V-5VQWkavALTTPVwt-kKUEUEL6nLjqEJsr8yzQkvSq26ovxuPDiWMFaQWNY4TkIXqM0R3yigpActyuT9DC178ShY9dxHVbq5rc4ktn2Zr-5juEhx9gF9hgP8kJgEefw/s400/Screen+Shot+2556-10-10+at+10.30.43+PM.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
จากนั้นให้เลือก Framework ดังต่อไปนี้&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;AVFoundation.framework&lt;/li&gt;
&lt;li&gt;CoreMedia.framework&lt;/li&gt;
&lt;li&gt;CoreVideo.framework&lt;/li&gt;
&lt;li&gt;QuartzCore.framework&lt;/li&gt;
&lt;li&gt;libiconv.dylib&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
จากนั้นทำการรัน Application ครับ เมื่อพบกับ Message ที่บอกว่า Success แล้วให้ทำการ ปิด Xcode ครับจากนั้นกลับมาที่ Titanium Mobile แล้วทำการรันอีกครั้ง Application ของเราก็จะสามารถรันขึ้นมาได้ครับ&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgM_AYhSbGrlhAJ-psX64IKdfHQOhiVNteZ0KyU1uE4oEp-4ouH3F-58T0C5QmAUuTSuLFaYu-FQErTibbVmWWndyK7msoczdb0R2SUPlXfktQ_TUCVB6sHfVh0YqUW230I4BJSXvAl6naz/s1600/Screen+Shot+2556-10-10+at+10.39.34+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgM_AYhSbGrlhAJ-psX64IKdfHQOhiVNteZ0KyU1uE4oEp-4ouH3F-58T0C5QmAUuTSuLFaYu-FQErTibbVmWWndyK7msoczdb0R2SUPlXfktQ_TUCVB6sHfVh0YqUW230I4BJSXvAl6naz/s320/Screen+Shot+2556-10-10+at+10.39.34+PM.png&quot; width=&quot;181&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
แล้วเราจะทดสอบ โปรแกรมของเราอย่างไร ในเมื่อเรารัน Application บน Emulator ทำแบบนี้ครับ หารูป QR Code หรือจะเอาจาก บทความนี้ก็ได้ครับ ลากไปใส่ Emulator ครับ จากนั้นก็กด ค้างไว้เพื่อ Save รูปลงไปที่ &amp;nbsp;Camera Roll จากนั้นลองกดที่ป่ม Scan barcode ตัวโปรแกรมจะไปเปิด Camera Roll ที่เก็บรูป QR Code ของเราเอาไว้ หากไม่มีอะไรผิดพลาดเมื่อโปรแกรมอ่าน QR Code แล้วจะแสดง Message แบบนี้เป็นอันเรียบร้อย&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2wY2TOeUhXQFRNqCJofRzr8rwNds_zI9OildZxapaCXJc31ctliVg1PYoVLMrJtTHdHR5GXSwWZXdLLlXq6dFcKiQN767w81THvHImwwLPnRoA-OlxfEa45uTtb0ytHL3lSAN4_9H-nov/s1600/Screen+Shot+2556-10-10+at+10.45.09+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;205&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2wY2TOeUhXQFRNqCJofRzr8rwNds_zI9OildZxapaCXJc31ctliVg1PYoVLMrJtTHdHR5GXSwWZXdLLlXq6dFcKiQN767w81THvHImwwLPnRoA-OlxfEa45uTtb0ytHL3lSAN4_9H-nov/s320/Screen+Shot+2556-10-10+at+10.45.09+PM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
ในส่วนของการ Configuration ตัว TiBar นั้นมีการ Configuration ให้เราได้ปรับเปลี่ยนแต่จะมีอะไรบ้างนั้นเรามาดูกันดีกว่าครับ&amp;nbsp;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;classType&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;เป็นการระบตัวอ่านของ TiBar ว่าจะเป็นการ Automatic Capture หรือจะเป็น Manual Capture ซึ่งแบ่งได้แบบนี้ครับ&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - ZBarReaderViewController - จะเป็นการสั่งให้ตัว Reader นั้นทำงานแบบ Automatic Capture&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - ZBarReaderController&amp;nbsp;- จะเป็นการสั่งให้ตัว Reader นั้นทำงานแบบ Manual Capture &amp;nbsp;&lt;ul&gt;&lt;ul&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;sourceType&lt;/span&gt;&amp;nbsp;เป็นการระบุว่าเราจะอ่าน QR Code นี้จากที่ไหน จะมีตัวเลือกดังนี้ครับ&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- Album - เป็นการระบุว่าเราจะอ่าน QR Code จาก Camera Roll (ถ้าเลือกตัวนี้แล้วในส่วนของ classType จะต้องเป็น&amp;nbsp;&lt;/span&gt;ZBarReaderController เท่านั้น)&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- Camera - จะเป็นการอ่านจาก กล้องของ iPhone หรือ iPad&amp;nbsp;&lt;ul&gt;
&lt;li&gt;cameraMode - ระบุเป็น Default&amp;nbsp;&lt;/li&gt;
&lt;li&gt;config - ค่าต่าง ๆ เพิ่มเติม โดยจะมีค่าเป็น ture หรือ false&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- showsCameraControls - &amp;nbsp;แสดงปุ่มควบคมกล้อง&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- showsZBarControls - แสดงปุุ่มควบคมการอ่าน QR Code&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- tracksSymbols - แสดงกรอบสีเหลี่ยมเมื่อมีการตรวจพบ QR Code&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- enableCache &amp;nbsp;- เปิดการใช้งาน Cache หรือไม่&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- showsHelpOnFail - แสดงตัวช่วยกรณีที่ไม่สามารถอ่านได้&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- takesPicture - ใช้งานแบบ ถ่ายภาพเก็บไว้หรือไม่&lt;ul&gt;
&lt;li&gt;symbol - ระบุให้กับตัว TiBar ว่าต้องการอ่าน Barcode แบบไหนบ้าง โดยจะมีค่าเป็น true หรือ false&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- QR-Code&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- CODE-128&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-&amp;nbsp;CODE-39&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-&amp;nbsp;I25 &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-&amp;nbsp;DataBar &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-&amp;nbsp;DataBar-Exp &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-&amp;nbsp;EAN-13 &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-&amp;nbsp;EAN-8 &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-&amp;nbsp;UPC-A &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-&amp;nbsp;UPC-E &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-&amp;nbsp;ISBN-13 &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-&amp;nbsp;ISBN-10 &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-&amp;nbsp;PDF417&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
หากต้องการทดสอบโปรแกรมบนเครื่องจริงก็สามารถที่จะทำได้ &amp;nbsp;&lt;a href=&quot;http://www.mobidevthai.com/2012/08/ios.html&quot; target=&quot;_blank&quot;&gt;ทดสอบบนเครื่อง สำหรับ iOS&lt;/a&gt;&amp;nbsp;เพียงเปลี่ยน Config เป็นแบบนี้ครับ&amp;nbsp;&lt;/div&gt;
&lt;code&gt;   classType: &quot;ZBarReaderController&quot;,&lt;br /&gt;
sourceType: &quot;Camera&quot;,&lt;br /&gt;
cameraMode: &quot;Default&quot;,&lt;br /&gt;
config:{&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&quot;showsCameraControls&quot;:true,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&quot;showsZBarControls&quot;:true,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&quot;tracksSymbols&quot;:true,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&quot;enableCache&quot;:true,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&quot;showsHelpOnFail&quot;:true,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&quot;takesPicture&quot;:false&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;},&lt;br /&gt;
symbol:{&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;QR-Code&quot;:true,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;CODE-128&quot;:false,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;CODE-39&quot;:false,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;I25&quot;:false,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;DataBar&quot;:false,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;DataBar-Exp&quot;:false,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;EAN-13&quot;:false,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;EAN-8&quot;:false,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;UPC-A&quot;:false,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;UPC-E&quot;:false,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;ISBN-13&quot;:false,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;ISBN-10&quot;:false,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;PDF417&quot;:false&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
ลองทดสอบกันดูนะครับเผื่อจะเป็น Idea สำหรับการทำ Application ที่เอาไว้ทำอะไรแปลก ๆ กับ QR Code หรือ Barcode ประเภทต่าง ๆ ได้ครับ</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/7966726933743339015/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2013/10/read-qr-code-barcode-with-titahium-mobile-tibar.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/7966726933743339015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/7966726933743339015'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2013/10/read-qr-code-barcode-with-titahium-mobile-tibar.html' title='เขียนโปรแกรมอ่าน  QR Code, Barcode ด้วย Titanium Mobile [iOS]'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVCHZqKujUbkXI34Fc2e1V971fwQd6hTPL6hsSAUV7gC7SAobnolfHGTziqbsrhB9bOY82eNB6B50oz6enfmt60LGvW-pmBoHiq9kapP2esivsIzqBxuZ3GjiBfwP8o48Rd71vi5NiYlY0/s72-c/chart-1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-7057020637152108348</id><published>2013-06-08T22:36:00.002+07:00</published><updated>2013-06-08T22:36:32.639+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="Facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="ios"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium SDK 3.1.0"/><title type='text'>Titanium SDK 3.1 กับ Facebook </title><content type='html'>จากบทความก่อนหน้านี้ที่ได้แนะนำวิธีการใช้&amp;nbsp;&lt;a href=&quot;http://www.mobidevthai.com/2013/02/titanium-mobile-facebook-connect.html&quot; target=&quot;_blank&quot;&gt;Titanium Mobile กับ Facebook&lt;/a&gt;&amp;nbsp;&amp;nbsp;เนื่องจากผมได้เขียน &lt;b&gt;Application&lt;/b&gt; ขึ้นมาใหม่อีก 1 ตัวซึ่งวิธีการเดิมจากบทความ&amp;nbsp;&lt;a href=&quot;http://www.mobidevthai.com/2013/02/titanium-mobile-facebook-connect.html&quot; target=&quot;_blank&quot;&gt;Titanium Mobile กับ Facebook&lt;/a&gt;&amp;nbsp;นั้นจะไม่สามารถนำมาใช้ได้กับ &lt;b&gt;SDK&lt;/b&gt; ตัวใหม่ได้ เพราะมีการเปลี่ยนแปลง วิธีการเรียกใช้ใน &lt;b&gt;Version 3.1.0 &lt;/b&gt;หลังจากหาวิธีการอยู่นาน วันนี้ผมจะมาแนะนำวิธีการแก้ปัญหานี้กันครับ&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTqYiTKd4ng_GqjFTbqx4taRM_3ObMyJk7M5JxytabGmcw0JQPkTx505cyC137bCgq08bdZjEC5NpPsj2YT1AwybkY3L6s_WmEMm3VhIjVm4x578TEaFLGmeQW0tMcbrCvPT9HBKsrglyd/s1600/fb1.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTqYiTKd4ng_GqjFTbqx4taRM_3ObMyJk7M5JxytabGmcw0JQPkTx505cyC137bCgq08bdZjEC5NpPsj2YT1AwybkY3L6s_WmEMm3VhIjVm4x578TEaFLGmeQW0tMcbrCvPT9HBKsrglyd/s1600/fb1.jpeg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;จากเดิมนั้นหากเราต้องการเรียกใช้ Facebook บน&lt;b&gt; Titanium Mobile&lt;/b&gt; เราจะต้องเรียกโดยใช้คำสั่งแบบนี้&lt;br /&gt;
&lt;code&gt;Titanium.Facebook.appid = &#39;253673451435346&#39;;&lt;br /&gt;
Titanium.Facebook.permissions = [&#39;publish_stream&#39;]; &lt;br /&gt;
Titanium.Facebook.addEventListener(&#39;login&#39;, function(e) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (e.success) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;alert(&#39;Logged In&#39;);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else if (e.error) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;alert(e.error);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else if (e.cancelled) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;alert(&quot;Canceled&quot;);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;
});&lt;br /&gt;
Titanium.Facebook.authorize();&lt;/code&gt;&lt;br /&gt;
ซึ่งจาก Code ด้านบนนี้หากนำไปรันจะพบว่า ไม่สามารถทำงานได้ตั้งแต่บรรทัดแรกครับ&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxnkF_kl-Y0Gy2vUVGsNMzWKar3szrU_hIdkmn8ZabJSPgLzuf-NzNf_uZtr7WNYBWmQz877iWZpBordfEXFwcfRqxh9VFxsXTR-3PQ7CDF05o5vgWYeJPGXg5JRVWsjesenG90j4hVeJs/s1600/Screen+Shot+2556-06-08+at+10.24.13+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;51&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxnkF_kl-Y0Gy2vUVGsNMzWKar3szrU_hIdkmn8ZabJSPgLzuf-NzNf_uZtr7WNYBWmQz877iWZpBordfEXFwcfRqxh9VFxsXTR-3PQ7CDF05o5vgWYeJPGXg5JRVWsjesenG90j4hVeJs/s640/Screen+Shot+2556-06-08+at+10.24.13+PM.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
วิธ๊การแก้ไขเป็นแบบนี้ครับ&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;เปิดไฟล์ tiapp.xml ขึ้นมาก่อนครับ จะพบหน้าจอแบบนี้&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimBeJlU2hQ2_6rrbv2RDPa8YuWru3tzk-3LtNiVKUYe4GKpN9UrUbkfzsp4Mv8OmiVfG8QhaXICT5-om0oumXSsWRdz1HHEwUwVHPc7g5yZIbeijHrG0n_0kLSGoAIAzDy6B9mRhWY-iwZ/s1600/Screen+Shot+2556-06-08+at+10.25.45+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;266&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimBeJlU2hQ2_6rrbv2RDPa8YuWru3tzk-3LtNiVKUYe4GKpN9UrUbkfzsp4Mv8OmiVfG8QhaXICT5-om0oumXSsWRdz1HHEwUwVHPc7g5yZIbeijHrG0n_0kLSGoAIAzDy6B9mRhWY-iwZ/s400/Screen+Shot+2556-06-08+at+10.25.45+PM.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;ไปที่ Module กดเครื่องหมาย&amp;nbsp;+&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaxpI13g-HK-Y8Bdcnb34jEYFCGT4T7vdHYrEfLH4GbFlHZU-VDKNz39q-lcMWVuSZ5zLZo-8q-0dDXrYwefG7lbCu_h2pIGB7f_sPu_ib19_ntgUH3V3KWo1QJTAOHfsPhX0Psquf275-/s1600/Screen+Shot+2556-06-08+at+10.25.57+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaxpI13g-HK-Y8Bdcnb34jEYFCGT4T7vdHYrEfLH4GbFlHZU-VDKNz39q-lcMWVuSZ5zLZo-8q-0dDXrYwefG7lbCu_h2pIGB7f_sPu_ib19_ntgUH3V3KWo1QJTAOHfsPhX0Psquf275-/s400/Screen+Shot+2556-06-08+at+10.25.57+PM.png&quot; width=&quot;375&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;เลือก Facebook&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdG_qF6vMjisik0rayKMx7psko6gFm3R1JEO1heME8ymPNeQ8etM93JxTV203zT6_NUfOnuYBB0SH0SuozhYVXpuQBd2cKH8NN7EQ5tO81yQD3F0G8XKNGyDZar9wTQGb_tzu7M03-vxaW/s1600/Screen+Shot+2556-06-08+at+10.26.03+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;332&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdG_qF6vMjisik0rayKMx7psko6gFm3R1JEO1heME8ymPNeQ8etM93JxTV203zT6_NUfOnuYBB0SH0SuozhYVXpuQBd2cKH8NN7EQ5tO81yQD3F0G8XKNGyDZar9wTQGb_tzu7M03-vxaW/s400/Screen+Shot+2556-06-08+at+10.26.03+PM.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
จากน้ัน Application ของเราก็จะสามารถทำงานได้ ตามปกติ &amp;nbsp;หรือ หากต้องการเรียกใช้ Facebook ในแบบ Common JS ก็สามารถเรียกใช้ได้โดยการสร้างตัวแปรขึ้นมาเพื่อเรียกใช้งาน Module Facebook ได้โดยใช้คำสั่ง แบบนี้&lt;/div&gt;
&lt;code&gt;var fb = require(&#39;facebook&#39;);&lt;br /&gt;
fb.appid = &#39;253673451435346&#39;;&lt;br /&gt;
fb.forceDialogAuth = true;&lt;br /&gt;
fb.permissions = [&#39;publish_stream&#39;,&#39;user_photos&#39;,&#39;user_birthday&#39;,&#39;offline_access&#39;];&lt;/code&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
ก็สามารถเรียกใช้ Facebook ได้ตามปกติแล้วหล่ะครับ&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/7057020637152108348/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2013/06/titanium-mobile-3-1-0-facebook-problem.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/7057020637152108348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/7057020637152108348'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2013/06/titanium-mobile-3-1-0-facebook-problem.html' title='Titanium SDK 3.1 กับ Facebook '/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTqYiTKd4ng_GqjFTbqx4taRM_3ObMyJk7M5JxytabGmcw0JQPkTx505cyC137bCgq08bdZjEC5NpPsj2YT1AwybkY3L6s_WmEMm3VhIjVm4x578TEaFLGmeQW0tMcbrCvPT9HBKsrglyd/s72-c/fb1.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-1859614646498604117</id><published>2013-04-23T00:14:00.002+07:00</published><updated>2013-04-23T12:38:30.710+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Graph API"/><category scheme="http://www.blogger.com/atom/ns#" term="Post Image To Wall"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><title type='text'>Post รูปภาพจากเครื่องไปยัง Facebook Wall ผ่าน Graph API</title><content type='html'>จากในบทความก่อนหน้านี้ผมได้นำเสนอการ Post ข้อความไปยัง Wall ของ User ผ่านทาง Graph API ของ Facebook ไปแล้ว ในบทความนี้ผมก็จะนำเสนอการ Post รูปภาพจากในเครื่องไปยัง Wall ของ Users ครับ เรามาเริ่มกันเลยดรกว่าครับ&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6DXRzvZX2Xr_nUcAc4A_IIZWZbYcFGzqqvIYqbCmyAe6tQOJHhWeiWSGw1YgY16gfxwYTv8Z_YEa6nlhYfgof39sJDEYyLPJo5trSslL3GDUKKmi1qCmDplMkxSu3s4-kpcrUbNt7FIGE/s1600/facebook+logo.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;201&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6DXRzvZX2Xr_nUcAc4A_IIZWZbYcFGzqqvIYqbCmyAe6tQOJHhWeiWSGw1YgY16gfxwYTv8Z_YEa6nlhYfgof39sJDEYyLPJo5trSslL3GDUKKmi1qCmDplMkxSu3s4-kpcrUbNt7FIGE/s320/facebook+logo.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;ดังเช่นในบทความก่อนหน้านี้นะครับ เราจะทำการสร้าง หน้าจอเพื่อรองรับการ Post รูปภาพตามนี้นะครับ&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNzziOVGPLjGfAmj1n4YLuzdumGB1ALFLCNq5EqkgVIIRKwe3B4zwO4IgMLGKKZWqpLYiD_1KNsKvrV7LAvhV8M7gOhg0aytTefzCXz-HGODm02rcEF0qEKqOUIjWXoL3fgrsDBdcOdrhM/s1600/Screen+Shot+2556-04-22+at+11.41.25+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNzziOVGPLjGfAmj1n4YLuzdumGB1ALFLCNq5EqkgVIIRKwe3B4zwO4IgMLGKKZWqpLYiD_1KNsKvrV7LAvhV8M7gOhg0aytTefzCXz-HGODm02rcEF0qEKqOUIjWXoL3fgrsDBdcOdrhM/s400/Screen+Shot+2556-04-22+at+11.41.25+PM.png&quot; width=&quot;223&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;โดยเราจะทำการสร้าง ด้วย Code ดังนีิ้ครับ&lt;/div&gt;&lt;code&gt;//สร้าง Windows&lt;br /&gt;
var win = Titanium.UI.createWindow({&lt;br /&gt;
&amp;nbsp; &amp;nbsp; backgroundColor : &#39;#fff&#39;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; layout : &#39;vertical&#39;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
//กำหนดค่าให้กับ Facebook API&lt;br /&gt;
Ti.Facebook.appid = &#39;253673451435346&#39;;&lt;br /&gt;
Ti.Facebook.permissions = [&#39;publish_stream&#39;,&#39;user_photos&#39;]; //เพิ่มส่วนของการ Access รูป&lt;br /&gt;
Ti.Facebook.addEventListener(&#39;login&#39;, function(e) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;if (e.success) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; alert(&#39;Logged in&#39;);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;
}); &lt;br /&gt;
&lt;br /&gt;
//สร้างปุ่มสำหรับ Login Facebook &lt;br /&gt;
win.add(Ti.Facebook.createLoginButton({&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;top : 20,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;style : Ti.Facebook.BUTTON_STYLE_WIDE&lt;br /&gt;
}));&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
จากนั้นก็ทำการสร้าง ปุ่ม &quot;Select Image&quot; เพื่อเปิด Gallery เพื่อเลือกรูปภาพ ซึ่งรายละเอียดการใช้งานจะอยู่ที่&amp;nbsp;&lt;a href=&quot;http://www.mobidevthai.com/2012/08/photo-gallery-titanium-mobile.html&quot; target=&quot;_blank&quot;&gt;เปิด Photo Gallery ด้วย Titanium Mobile&lt;/a&gt;&lt;br /&gt;
&lt;code&gt;//สร้างปุ่มเปืิด Gallery &lt;br /&gt;
var img = Titanium.UI.createButton({&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; title : &#39; Select Image &#39;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; top : 50&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
//แสดงภาพจากการเลือกใน Gallery&lt;br /&gt;
var imgView = Titanium.UI.createImageView({&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; width : 300 ,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; backgroundColor : &#39;#555&#39;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; top : 20,&lt;br /&gt;
});&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
จากนั้นเพิ่มปุ่มสำหรับการ Post ลงไปใน หน้าจอ แล้วทำการ นำเอา Object ทั้งหมดไปใส่ใน Window&lt;br /&gt;
&lt;code&gt;//ปุ่มสำหรับ Post&lt;br /&gt;
var post = Titanium.UI.createButton({&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; title : &#39; Post To My Wall&#39;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; top : 20&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
win.add(img);&lt;br /&gt;
win.add(imgView);&lt;br /&gt;
win.add(post);&lt;/code&gt;&lt;br /&gt;
เมื่อทำการรันขึ้นมาก็จะได้หน้าจอ แบบนี้ครับ&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOjHBVunoai3M2f0ar48oHAgCw2rxQHC2u9aO3q9kpW8ktDzFEohk92CPpAyxKykgpqD1XPeQ_U0kAzCz96tHDl72l019Rfu8VlCQxvOyGsEllbaUxnouRRIOWH474fDG6iI7vrx7wQiHR/s1600/Screen+Shot+2556-04-22+at+11.53.38+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOjHBVunoai3M2f0ar48oHAgCw2rxQHC2u9aO3q9kpW8ktDzFEohk92CPpAyxKykgpqD1XPeQ_U0kAzCz96tHDl72l019Rfu8VlCQxvOyGsEllbaUxnouRRIOWH474fDG6iI7vrx7wQiHR/s320/Screen+Shot+2556-04-22+at+11.53.38+PM.png&quot; width=&quot;179&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;หน้าจอเริ่มต้น&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;สิ่งที่เราจะทำต่อไปก็คือเมื่อทำการกด ปุ่ม &amp;nbsp;Select Image ให้ทำการเปิด Gallery ขึ้นมาครับ (&lt;a href=&quot;http://www.mobidevthai.com/2012/08/photo-gallery-titanium-mobile.html&quot; target=&quot;_blank&quot;&gt;เปิด Photo Gallery ด้วย Titanium Mobile&lt;/a&gt;) และเมื่อทำการเลือกรูปภาพเสร็จแล้วให้ทำการแสดงในส่วนของ Image View&lt;br /&gt;
&lt;code&gt;img.addEventListener(&#39;click&#39;,function(){&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Titanium.Media.openPhotoGallery({&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mediaTypes : Titanium.Media.MEDIA_TYPE_PHOTO, &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; success : function(event){ &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imgView.image = event.media&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;});&lt;br /&gt;
});&lt;/code&gt;&lt;br /&gt;
จากนั้นเราก็จะมาทำการเขียนในส่วนของการ Post รูปภาพดังกล่าวไปยัง Facebook ผ่านทาง Graph API กันครับ โดยสิ่งที่เราต้องทำก็คือเมื่อทำการกดที่ ปุ่ม Post To My Wall แล้วให้ทำการ Post รูปภาพที่เราเลือกไปยัง Wall ครับโดยเราจะทำการเขียนคำสั่งแบบนี้ครับ&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;post.addEventListener(&#39;click&#39;,function(){&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;Titanium.Facebook.authorize();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;var file1 = imgView.image;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; //เปลี่ยน Graph Path เป็น me/photos เพื่อ Post เข้าไปยัง photos&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;Titanium.Facebook.requestWithGraphPath(&#39;me/photos&#39;, &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {message : &#39;Image From Mobidevthai&#39;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;picture : file1},&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &#39;POST&#39;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;function(data){&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; alert(data);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;});&lt;/code&gt;&lt;br /&gt;
ทดลองรันดูครับ เมื่อเรากดที่ปุ่ม Post To My Wall ถ้าหากว่าได้ Message แบบนี้ แสดงว่า เราสามารถทำการ Post ข้อมูลได้แล้วครับ&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmkzLOfJ1retWKc0WNPnutCTVVdbeGU0fyeuKTudLS40l6h27l3WytVEsrxni40OMK60iNUk1LxOqARfInGwbTLmA64aRKyvtQ9QTEFl_K3YWue-a8dzxl15TMxt9pCNinGcB60lfTpCff/s1600/Screen+Shot+2556-04-23+at+12.07.49+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmkzLOfJ1retWKc0WNPnutCTVVdbeGU0fyeuKTudLS40l6h27l3WytVEsrxni40OMK60iNUk1LxOqARfInGwbTLmA64aRKyvtQ9QTEFl_K3YWue-a8dzxl15TMxt9pCNinGcB60lfTpCff/s320/Screen+Shot+2556-04-23+at+12.07.49+AM.png&quot; width=&quot;181&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
ลองไปเช็คที่ Wall ของเรากันครับ ก็จะพบกับ รูปภาพที่เราทำการเลือกเอาไว้นั่นเองครับ&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS4YlLUBsSlvEGAGQe_otljTtpdhLrZUHqPTSQ5OYyGEdHWyOt0VHPhA_8QkqwdLPcYJ0PQ3JWUOpxV8gUvWnLKOJm6hr5wDCmQdqMAWjXzmkSCNEyVIDa0r3yqg-I6Vf0bUmE7jcBtQ48/s1600/Screen+Shot+2556-04-23+at+12.09.20+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;248&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS4YlLUBsSlvEGAGQe_otljTtpdhLrZUHqPTSQ5OYyGEdHWyOt0VHPhA_8QkqwdLPcYJ0PQ3JWUOpxV8gUvWnLKOJm6hr5wDCmQdqMAWjXzmkSCNEyVIDa0r3yqg-I6Vf0bUmE7jcBtQ48/s320/Screen+Shot+2556-04-23+at+12.09.20+AM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
เป็นอย่างไรกันบ้างครับกับการ Post รูปภาพไปยัง Wall ผ่านทาง Graph API ในบทความหน้าเรามาสร้างรูปเป็น&amp;nbsp;Album กันดีกว่าครับ&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/1859614646498604117/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2013/04/post-image-to-facebook-wall-via-graph-api-titanium-mobile.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/1859614646498604117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/1859614646498604117'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2013/04/post-image-to-facebook-wall-via-graph-api-titanium-mobile.html' title='Post รูปภาพจากเครื่องไปยัง Facebook Wall ผ่าน Graph API'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6DXRzvZX2Xr_nUcAc4A_IIZWZbYcFGzqqvIYqbCmyAe6tQOJHhWeiWSGw1YgY16gfxwYTv8Z_YEa6nlhYfgof39sJDEYyLPJo5trSslL3GDUKKmi1qCmDplMkxSu3s4-kpcrUbNt7FIGE/s72-c/facebook+logo.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-963268040494835538</id><published>2013-03-31T20:25:00.005+07:00</published><updated>2013-03-31T20:25:58.702+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="Facebook API"/><category scheme="http://www.blogger.com/atom/ns#" term="Graph API"/><category scheme="http://www.blogger.com/atom/ns#" term="Post Message"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><title type='text'>Post ข้อความ ไปยัง Facebook ด้วย Titanium Mobile</title><content type='html'>&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;หลังจากในบทความที่แล้ว ผมได้แนะนำวิธีการ ดึงเอาข้อมูล Profile ของ User มาใช้งานแล้ว ใน บทความนี้ผมก็จะมาแนะนำวิธีการ Post ข้อความ ลงไปยัง &lt;b&gt;Facebook&lt;/b&gt; ครับ&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPYFV1L14tZyUa5ZqMDKuSjjIN5NwGGQXhX7nZsc3jSVbGsjKmSu-FhnwoLcIavgsi3HW3q99YZG2wAC32DeKna4XDTQHgosTxflRZBkxBWfO9Z7rpH1YBYrRenrXn5iubBuyrV9pj9prx/s1600/facebook+logo.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;252&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPYFV1L14tZyUa5ZqMDKuSjjIN5NwGGQXhX7nZsc3jSVbGsjKmSu-FhnwoLcIavgsi3HW3q99YZG2wAC32DeKna4XDTQHgosTxflRZBkxBWfO9Z7rpH1YBYrRenrXn5iubBuyrV9pj9prx/s400/facebook+logo.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
จากในบทความก่อน นั้น นอกจากเป็นการดึงข้อมูล Profile ของ User แล้ว ยังสามารถทำการ &lt;b&gt;Post&lt;/b&gt; ข้อความ ด้วยวิธีการคล้าย ๆ กันได้อีกด้วย ครับ โดยใช้ Function ของ Titanium.Facebook ที่มีชือว่า&lt;/div&gt;
&lt;code&gt;requestWithGraphPath&lt;/code&gt;&lt;br /&gt;
เรามาเริ่มกันเลยครับ ทำการตั้งค่าสำหรับ Application ของเราก่อนนะครับ พร้อมทั้งสร้าง ปุ่ม Login With Facebook ครับ&lt;br /&gt;
&lt;code&gt;var win = Ti.UI.createWindow({&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; backgroundColor : &#39;#fff&#39; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;});&lt;br /&gt;
&lt;br /&gt;
Ti.Facebook.appid = &#39;253673451435346&#39;;&lt;br /&gt;
Ti.Facebook.permissions = [&#39;publish_stream&#39;];&lt;br /&gt;
Ti.Facebook.addEventListener(&#39;login&#39;, function(e) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; if (e.success) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;alert(&#39;Logged in&#39;);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
win.add(Ti.Facebook.createLoginButton({&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; top : 50,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; style : Ti.Facebook.BUTTON_STYLE_WIDE&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; })&lt;br /&gt;
);&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
จากนั้นเราก็ทำการสร้าง Textfield พร้อมทั้ง ปุ่มเพื่อทำการ Post ข้อความครับ&lt;br /&gt;
&lt;code&gt;var textfield = Titanium.UI.createTextField({&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; width : 300,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; top : 120,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; borderColor : &#39;#000&#39;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;br /&gt;
&lt;br /&gt;
var post = Titanium.UI.createButton({&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; title : &#39; Post To My Wall&#39;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; top : 170&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;br /&gt;
&lt;br /&gt;
win.add(textfield);&lt;br /&gt;
win.add(post);&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
ก็จะได้หน้าจอแบบนี้ครับ&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2BrZfeDXehF1sj-yTkL43O1EavTMJJlVoVjLdEsjlKn8i7Jhxr85_KsjfycrUI4xZFx2rPE4I7O3cYsC67rsDiygZ8jhzxweJh89u2qvfraR_4nJX7s_FUKPLNPwl-OTEEPCHgG8dVO8e/s1600/Screen+Shot+2556-03-31+at+8.15.12+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2BrZfeDXehF1sj-yTkL43O1EavTMJJlVoVjLdEsjlKn8i7Jhxr85_KsjfycrUI4xZFx2rPE4I7O3cYsC67rsDiygZ8jhzxweJh89u2qvfraR_4nJX7s_FUKPLNPwl-OTEEPCHgG8dVO8e/s320/Screen+Shot+2556-03-31+at+8.15.12+PM.png&quot; width=&quot;217&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
จากนั้นก็ทำการเพิ่ม Event &amp;nbsp;ให้กับ ปุ่ม ด้วยการ &lt;b&gt;addEventListener&lt;/b&gt; และทำการเขียน Code เพื่อทำการ Post ข้อความไปยัง Wall ของ User ที่ทำการ Login&lt;br /&gt;
&lt;code&gt;post.addEventListener(&#39;click&#39;,function(){&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Titanium.Facebook.authorize();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Titanium.Facebook.requestWithGraphPath(&#39;me/feed&#39;, &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{message : textfield.value},&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&#39;POST&#39;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; function(data){&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;alert(data);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;br /&gt;
});&lt;/code&gt;&lt;br /&gt;
ตรงนี้ผมให้ทำการ Alert เพื่อดูข้อมูลที่ส่งกลับมาจาก &lt;b&gt;Facebook&lt;/b&gt; เพื่อตรวจสอบการทำงานของ Code นะครับ ก็จะได้ &lt;b&gt;Messaege&lt;/b&gt; หน้าตา  แบบนี้ครับ&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMeHnKWmuOp1FD8wNVYG0zFZ0ojW78G3yBCFY5sxCqpeJPtM7KB-ZdCmB1HISZTQQ0cBo_-Jk_DH0jjj5jjlBsXkLctFIbJMr5orcaQLQ8Lg5v2PTw7u1LgQ_4cg9mBeY2VV1sUJJABgcI/s1600/Screen+Shot+2556-03-31+at+8.14.18+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMeHnKWmuOp1FD8wNVYG0zFZ0ojW78G3yBCFY5sxCqpeJPtM7KB-ZdCmB1HISZTQQ0cBo_-Jk_DH0jjj5jjlBsXkLctFIbJMr5orcaQLQ8Lg5v2PTw7u1LgQ_4cg9mBeY2VV1sUJJABgcI/s320/Screen+Shot+2556-03-31+at+8.14.18+PM.png&quot; width=&quot;218&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
สังเกตุจาก &lt;b&gt;success&lt;/b&gt; หากมีค่าเป็น 1 นั่นหมายความว่าข้อความที่ต้องการนั้น ถูก &lt;b&gt;Post&lt;/b&gt; ไปยัง &lt;b&gt;Wall&lt;/b&gt; ของ User จริง ๆ แล้วนั่นเองครับ เราไปเช็คที่ &lt;b&gt;Facebook&lt;/b&gt; กันครับว่าหน้าตาที่ ถูก Post ไปยัง &lt;b&gt;Facebook&lt;/b&gt; นั้นจะเป็นอย่างไร&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaTSkwznltWj9tgEGIMuxRBT86NfQ2XB7yQEquXZz8e_Rd6fgo84NRjUkpCxbJ8VLJDdDEeImx8LUGWPalvapSxrgSZd8D3vqdYS4xN-7lJUrDW5Z3w3eB5Id8XoXhA0QX5Y7WKxcwwrWt/s1600/Screen+Shot+2556-03-31+at+8.14.33+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;112&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaTSkwznltWj9tgEGIMuxRBT86NfQ2XB7yQEquXZz8e_Rd6fgo84NRjUkpCxbJ8VLJDdDEeImx8LUGWPalvapSxrgSZd8D3vqdYS4xN-7lJUrDW5Z3w3eB5Id8XoXhA0QX5Y7WKxcwwrWt/s320/Screen+Shot+2556-03-31+at+8.14.33+PM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
ก็จะพบกับข้อความที่ถูก &lt;b&gt;Post&lt;/b&gt; ผ่าน &lt;b&gt;Application&lt;/b&gt; ที่เราสร้างขึ้นมา ตามรูปครับ เป็นอย่างไรกันบ้างครับ สำหรับวิธีการ Post ข้อความไปยัง &lt;b&gt;Facebook&lt;/b&gt; ผ่านทาง &lt;b&gt;Application&lt;/b&gt; ในบทความหน้าผมจะแนะนำวิธีการ Post รูปภาพขึ้นไปยัง Wall ผ่านทาง &lt;b&gt;Titanium Mobile&lt;/b&gt; อย่าลืมติดตามนะครับ&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/963268040494835538/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2013/03/post-facebook-titanium-mobile.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/963268040494835538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/963268040494835538'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2013/03/post-facebook-titanium-mobile.html' title='Post ข้อความ ไปยัง Facebook ด้วย Titanium Mobile'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPYFV1L14tZyUa5ZqMDKuSjjIN5NwGGQXhX7nZsc3jSVbGsjKmSu-FhnwoLcIavgsi3HW3q99YZG2wAC32DeKna4XDTQHgosTxflRZBkxBWfO9Z7rpH1YBYrRenrXn5iubBuyrV9pj9prx/s72-c/facebook+logo.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-8462293876397678644</id><published>2013-03-25T23:23:00.002+07:00</published><updated>2013-03-25T23:23:45.624+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="Facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="Graph API"/><category scheme="http://www.blogger.com/atom/ns#" term="ios"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><title type='text'>ดึง Profile ของ​ User Facebook ผ่าน Facebook Graph API ด้วย Titanium Mobile</title><content type='html'>&lt;div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;หลังจากที่เราเรียนรู้วิธีการใข้ &lt;b&gt;Facebook&lt;/b&gt; เพื่อจัดการระบบ &lt;b&gt;User&lt;/b&gt; ของเราแล้วนั้น ในบทความนี้ ผมจะขอกล่าวถึงวิธีการดึงเอาข้อมูลอื่น ๆ ของ &lt;b&gt;User&lt;/b&gt; เพื่อนำมาใช้งานต่อ โดยในบทความนี้จะกล่าวถึง &lt;b&gt;API&lt;/b&gt; ของ &lt;b&gt;Facebook&lt;/b&gt; ที่ใช้ชื่อว่า &lt;b&gt;Graph API &lt;/b&gt;ครับ&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZjTM3v-V4MEpGPqyv6PmWeY8mbz2ZMxBIawYaCKYLT3je5t7w0h_q2di35jC4F5iJI_B5I2Q3l0-WM9uaJZIOsZP7zaiZSA2IxDo93GpON6AjZkB9Qv9Pq4L-dq1908KmFFVx0EfWw6Nc/s1600/fb1.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZjTM3v-V4MEpGPqyv6PmWeY8mbz2ZMxBIawYaCKYLT3je5t7w0h_q2di35jC4F5iJI_B5I2Q3l0-WM9uaJZIOsZP7zaiZSA2IxDo93GpON6AjZkB9Qv9Pq4L-dq1908KmFFVx0EfWw6Nc/s1600/fb1.jpeg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Facebook Graph API&lt;/b&gt; เป็น API หลักในการดึงข้อมูล และ ทำการ Post ไปยัง Wall ของแต่ User โดย Function หลัก ๆ ของ Graph API นั้น สามารถเข้าไปดูได้ที่ &lt;a href=&quot;https://developers.facebook.com/docs/reference/api/&quot; target=&quot;_blank&quot;&gt;Facebook Graph API Reference&lt;/a&gt;&amp;nbsp;และในส่วนของ Titanium Mobile นั้นเราจะใช้ Function ของ Titanium.Facebook ที่มีชื่อว่า&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;code&gt;requestWithGraphPath&lt;/code&gt;&lt;br /&gt;
เรามาเร่ิมกันเลยดีกว่าครับ ก่อนอื่นเลยก็ต้องทำการตั้งค่าสำหรับ Application ของเราก่อนนะครับ ดูได้จาก &lt;a href=&quot;http://www.mobidevthai.com/2013/03/titanium-mobile-using-facebook-login.html&quot; target=&quot;_blank&quot;&gt;การใช้ Facebook เพื่อจัดการระบบ Login และ User ด้วย Titanium Mobile&lt;/a&gt;&lt;br /&gt;
&lt;code&gt;var win = Ti.UI.createWindow({&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;backgroundColor : &#39;#fff&#39; &lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
Ti.Facebook.appid = &#39;253673451435346&#39;;&lt;br /&gt;
Ti.Facebook.permissions = [&#39;publish_stream&#39;];&lt;br /&gt;
Ti.Facebook.addEventListener(&#39;login&#39;, function(e) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if (e.success) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; alert(&#39;Logged in&#39;);&lt;br /&gt;
&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
win.add(Ti.Facebook.createLoginButton({&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; top : 50,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;style : Ti.Facebook.BUTTON_STYLE_WIDE&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; })&lt;br /&gt;
);&lt;/code&gt;&lt;br /&gt;
จากนั้นก็ทำการเพิ่มปุ่มขึ้นมา 1 ปุ่มเพื่อทำการ ดึงข้อมูล Profile ของเราขึ้นมาครับ&lt;br /&gt;
&lt;code&gt;var buttonGetinfo = Titanium.UI.createButton({&lt;br /&gt;
&amp;nbsp; &amp;nbsp;title:&#39;Get my info&#39;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp;width : 120&lt;br /&gt;
});&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
จากนั้นก็ทำการเขียน เพื่อจับ Event ของการ Click ลงบนปุ่ม โดยในปุ่มนั้นจะทำการตรวจสอบก่อนว่ามีการ Login แล้วหรือยัง จากนั้นก็ทำการเรียกใช้ &amp;nbsp;&lt;b&gt;Titanium.Facebook.requestWithGraphPath&lt;/b&gt; โดยที่เราจะต้องทำการระบุ Field ที่เราต้องการลงไปด้วย&lt;br /&gt;
&lt;code&gt;buttonGetinfo.addEventListener(&#39;click&#39;,function(){&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Titanium.Facebook.authorize();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Titanium.Facebook.requestWithGraphPath(&#39;me&#39;, &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {fields : &amp;nbsp;&#39;id,name,first_name,last_name,gender,email,picture,birthday&#39;},&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &#39;GET&#39;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; function(data){&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; alert(data);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;br /&gt;
});&lt;/code&gt;&lt;br /&gt;
จากนั้นทดลองรันดูครับ ก็จะพบหน้าจอแบบนี้&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6aNG0H21WW6GE9RZCYMjeeTwnmypToVdgwgt1annomcaqg76J0xEmZ1gmi7LPKr0tLJ-7HdUr_jg58DbHRTUXWGk9aigVLwNhvSKsNPzHN5h6g0QnniS-s5nD1eQYZ56SqDRdTeGgI46F/s1600/Screen+Shot+2556-03-25+at+11.10.05+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6aNG0H21WW6GE9RZCYMjeeTwnmypToVdgwgt1annomcaqg76J0xEmZ1gmi7LPKr0tLJ-7HdUr_jg58DbHRTUXWGk9aigVLwNhvSKsNPzHN5h6g0QnniS-s5nD1eQYZ56SqDRdTeGgI46F/s320/Screen+Shot+2556-03-25+at+11.10.05+PM.png&quot; width=&quot;214&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
กดที่ปุม &amp;nbsp;Login with Facebook ก่อนเพื่อทำการ Login ตามปกติ จากนั้นทดลองกดที่ปุ่ม Get my info ก็จะพบกับ Information ต่าง ๆ ของ Profile ที่เราทำการ Login ครับ&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdAAFWm_q3tCdAUQLRFE60JYH2Nn8sMOIXViXI928O8dhWTQTrzqNgmXlWOj0NkZ_FFIBT9QYzqdHvwvraTr7tkeOUm9ZLQUyHXKlmwRd_pHk-NtHZ_zaxSQ20_AYeK1P5tXFOe8hKLzTu/s1600/Screen+Shot+2556-03-25+at+11.12.41+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdAAFWm_q3tCdAUQLRFE60JYH2Nn8sMOIXViXI928O8dhWTQTrzqNgmXlWOj0NkZ_FFIBT9QYzqdHvwvraTr7tkeOUm9ZLQUyHXKlmwRd_pHk-NtHZ_zaxSQ20_AYeK1P5tXFOe8hKLzTu/s320/Screen+Shot+2556-03-25+at+11.12.41+PM.png&quot; width=&quot;252&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
เราก็สามารถนำข้อมูลตรงนี้ไปใช้ทำอะไรได้อีกหลายต่อหลายอย่าง ทั้งนี้ข้อมูลที่จะได้กลับมานั้นขึ้นอยู่กับ Permission ที่เราร้องขอไว้ใน App ID นั้น ๆ ด้วยนะครับ&lt;br /&gt;
&lt;br /&gt;
ในส่วนของ Field หรือ Path ต่าง ๆ จริง ๆ แล้วยังมีอีกหลาย Path ที่เราสามารถเข้าไปนำข้อมูลดังกล่าวออกมาใช้งานอีกได้อย่างมากมาย โดยเราสามารถที่จะทดลอง &amp;nbsp;Path ที่เราต้องการผ่านทาง &lt;a href=&quot;https://developers.facebook.com/tools/explorer/&quot; target=&quot;_blank&quot;&gt;Facebook Graph API Explorer&lt;/a&gt;&amp;nbsp; และในเรื่องของ Path นั้นเราสามารถเข้าไปดูรายละเอียดเพิ่มเติมได้ที่ &lt;a href=&quot;https://developers.facebook.com/docs/reference/api/&quot; target=&quot;_blank&quot;&gt;Facebook Graph API Reference&lt;/a&gt;&amp;nbsp;ในบทความนี้ก็จะขอจบลงตรงนี้ก่อน ใยบทความหน้าเราคงยังอยู่กับการทำงานกับ Facebook กันต่อ แต่จะเป็นเรื่องอะไรนั้น ติดตามกันต่อด้วยนะครับ&lt;br /&gt;
&lt;br /&gt;
ปล. &amp;nbsp;Code ที่เขียนในบทความนี้สามารถใช้ได้ทั้ง iOS และ Android</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/8462293876397678644/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2013/03/read-users-profile-with-facebook-graph-api.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/8462293876397678644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/8462293876397678644'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2013/03/read-users-profile-with-facebook-graph-api.html' title='ดึง Profile ของ​ User Facebook ผ่าน Facebook Graph API ด้วย Titanium Mobile'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZjTM3v-V4MEpGPqyv6PmWeY8mbz2ZMxBIawYaCKYLT3je5t7w0h_q2di35jC4F5iJI_B5I2Q3l0-WM9uaJZIOsZP7zaiZSA2IxDo93GpON6AjZkB9Qv9Pq4L-dq1908KmFFVx0EfWw6Nc/s72-c/fb1.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-1132273255167409195</id><published>2013-03-05T23:25:00.002+07:00</published><updated>2013-06-18T08:58:45.928+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="Login with Facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><title type='text'>การใช้ Facebook เพื่อจัดการระบบ Login และ User ด้วย Titanium Mobile</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;หลังจากที่เราได้ทำความรู้จักกับ &lt;b&gt;API&lt;/b&gt; ที่มีไว้สำหรับเชื่อมต่อ &lt;b&gt;Application&lt;/b&gt; ของเรากับ &lt;b&gt;Facebook&lt;/b&gt; ไปแล้วในบทความ &lt;a href=&quot;http://www.mobidevthai.com/2013/02/titanium-mobile-facebook-connect.html&quot; target=&quot;_blank&quot;&gt;Titanium Mobile กับ Facebook&lt;/a&gt;&amp;nbsp;มาถึงในบทความนี้ก็จะกล่าวถึงวิธีการใช้ &lt;b&gt;Facebook&lt;/b&gt; ในการ &lt;b&gt;Login&lt;/b&gt; เพื่อเข้าใช้งานใน &lt;b&gt;Application&lt;/b&gt; ของเรา เหมือนกับหลาย ๆ Application ที่นิยมใช้กันนะครับ&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt; &lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3a07B0tqjLX6bQkbPcCzE4_B68t_cVc1eRXciTCUNCeM_3LXxtSoChly4LoiP4cw06CYotNXQ-1xEOzpnmpA-lOBdS12_VJRyBxxLFOYYQG-x47Ugb5_7yRswWxiS2DzHkAtA6nRdBVne/s1600/fbLogo.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3a07B0tqjLX6bQkbPcCzE4_B68t_cVc1eRXciTCUNCeM_3LXxtSoChly4LoiP4cw06CYotNXQ-1xEOzpnmpA-lOBdS12_VJRyBxxLFOYYQG-x47Ugb5_7yRswWxiS2DzHkAtA6nRdBVne/s1600/fbLogo.jpeg&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt; &lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;สิ่งที่เราจะต้องทำการจัดเตรียมก่อนเป็นอันดับแรกเลยนั้นก็คือ &lt;b&gt;Facebook App ID&lt;/b&gt; ครับ โดยเราสามารถไปสร้างได้ที่ &lt;a href=&quot;http://developers.facebook.com/&quot;&gt;developers.facebook.com&lt;/a&gt;&amp;nbsp;ตามภาพนะครับ&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghC_MTugQDwVMPkYD5MbimcFS4Elta93LdrQK67Pir_Ocr5Sims9NJ9rn-S9xlUIyK0ZPp3ASYcvk3h7McndvqI19SijqA6pbDpfFrJ6FjXjwhGs2g3zpJfLh6-PYPpZSn2BKF0D40lPwL/s1600/Screen+Shot+2556-03-05+at+10.47.16+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;342&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghC_MTugQDwVMPkYD5MbimcFS4Elta93LdrQK67Pir_Ocr5Sims9NJ9rn-S9xlUIyK0ZPp3ASYcvk3h7McndvqI19SijqA6pbDpfFrJ6FjXjwhGs2g3zpJfLh6-PYPpZSn2BKF0D40lPwL/s400/Screen+Shot+2556-03-05+at+10.47.16+PM.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;หลังจากนั้นเราก็มาที่ &lt;b&gt;Titanium &amp;nbsp;Studio&lt;/b&gt; กันต่อเลยครับ เริ่มกันด้วยการกำหนด App ID ให้กับ &lt;b&gt;Titanium.Facebook&lt;/b&gt; กันก่อนครับ ด้วยคำสั่ง&lt;/span&gt;&lt;/div&gt;&lt;code&gt;Titanium.Facebook.appid = &quot;253673451435346&quot;;&lt;/code&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;จากนั้นทำการกำหนด &lt;b&gt;Permission&lt;/b&gt; ให้กับ Application ของเราครับ&lt;/span&gt;&lt;br /&gt;
&lt;code&gt;Titanium.Facebook.permissions = [&#39;publish_stream&#39;];&lt;/code&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;ในส่วนของ Permission นั้น สามารถเข้าไปดูทั้งหมดได้ที่ &lt;a href=&quot;http://developers.facebook.com/docs/reference/fql/permissions/&quot; target=&quot;_blank&quot;&gt;Facebook Permission List&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt; &lt;/span&gt; &lt;span style=&quot;color: #990000; font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;***เพิ่มเติมสำหรับ iOS นะครับ เราจะต้องเพิ่ม Config บางอย่างลงไปใน tiapp.xml สำหรับการเชื่อมต่อกับ Facebook ครับ โดยสิ่งที่เราต้องเพิ่มคือ&lt;/span&gt;&lt;br /&gt;
&lt;code&gt;&amp;lt;property name=&quot;ti.facebook.appid&quot;&amp;gt;253673451435346&amp;lt;/property&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;มาต่อกันเลยนะครับ จากที่เคยได้กล่าวเอาไว้ในบทความก่อนหน้า&amp;nbsp;&lt;a href=&quot;http://www.mobidevthai.com/2013/02/titanium-mobile-facebook-connect.html&quot; target=&quot;_blank&quot;&gt;Titanium Mobile กับ Facebook&lt;/a&gt;&amp;nbsp;การ Login เข้าสู่ Facebook นั้นสามารถทำได้ 2 วิธีด้วยกัน นั่นก็คือ&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px;&quot;&gt;&lt;b&gt;Titanium.Facebook.authorize&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px;&quot;&gt;&lt;b&gt;Titanium.Facebook.LoginButton&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;เรามาเริ่มกันที่วิธีแรกกันก่อนครับ เข้าสู่ Application ด้วย &lt;b&gt;Titanium.Facebook.authorize&lt;/b&gt; สามารถเขียนคำสั่งเพื่อเรียกใช้งานดังนี้ครับ &lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;notpretty&quot; id=&quot;ext-gen1296&quot; style=&quot;background-color: #f7f7f7; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; border-top-left-radius: 5px; border-top-right-radius: 5px; border: 1px solid rgb(232, 232, 232); box-sizing: border-box; color: #314e64; font-family: Menlo, &#39;Courier New&#39;, Courier, monospace; font-size: 13px; line-height: 1.3em; margin-bottom: 14px; margin-top: 10px; max-width: 900px; overflow-x: auto; overflow-y: hidden; padding: 10px 12px;&quot;&gt;Titanium.Facebook.appid = &#39;&lt;span style=&quot;white-space: normal;&quot;&gt;253673451435346&lt;/span&gt;&#39;;
Titanium.Facebook.permissions = [&#39;publish_stream&#39;]; 
Titanium.Facebook.addEventListener(&#39;login&#39;, function(e) {
    if (e.success) {
        alert(&#39;Logged In&#39;);
    } else if (e.error) {
        alert(e.error);
    } else if (e.cancelled) {
        alert(&quot;Canceled&quot;);
    }
});
Titanium.Facebook.authorize();&lt;/pre&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;เมื่อทำการรัน ออกมาก็จะพบกับหน้าจอ แบบนี้ครับ&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQSvGdQDbQJAU4dXmzzQQpEBM3blfTAVrW6wgXK1GKDP4-ZKbqptfVxeYJWPM-mTDgs4P_BeeRB8lBwT-AZuzKUNriLaFP1n4WmZz5mWyrZUBvMhb8BS9f8t3jbb6oLGjD9SaH356Ks7Nj/s1600/Screen+Shot+2556-03-05+at+11.07.58+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQSvGdQDbQJAU4dXmzzQQpEBM3blfTAVrW6wgXK1GKDP4-ZKbqptfVxeYJWPM-mTDgs4P_BeeRB8lBwT-AZuzKUNriLaFP1n4WmZz5mWyrZUBvMhb8BS9f8t3jbb6oLGjD9SaH356Ks7Nj/s320/Screen+Shot+2556-03-05+at+11.07.58+PM.png&quot; width=&quot;213&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;หน้าจอสำหรับ &amp;nbsp;Login เข้า Facebook&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaJz600uVVytKjtrM867eWq6nHMJLdLWcq-F-TLNdQuFnoHAn-fyAvwtiuEiI-WbPWAQBNOba6VHkt0e_Ou_pY1cDwphmppKEQ_iaormqt0mjH2qggj36fuPBeI-BP0Npt1rwM5Rv9XscM/s1600/Screen+Shot+2556-03-05+at+11.09.36+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaJz600uVVytKjtrM867eWq6nHMJLdLWcq-F-TLNdQuFnoHAn-fyAvwtiuEiI-WbPWAQBNOba6VHkt0e_Ou_pY1cDwphmppKEQ_iaormqt0mjH2qggj36fuPBeI-BP0Npt1rwM5Rv9XscM/s320/Screen+Shot+2556-03-05+at+11.09.36+PM.png&quot; width=&quot;217&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Facebook จะถามเพื่อให้เรารับ Application ของเรา&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnql1uKXWhsS35IBCDGuwSJu3E7_428EfUvuYMu7AL3em4oqXytU8L1uMbdSon5ipkhV6uknvxXvAEgJEv_gYYMYCn1h068d7-SZdo626bAynHIbB0rZSZ6k9UkobujA5gQkyUt7uvQvXb/s1600/Screen+Shot+2556-03-05+at+11.10.27+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnql1uKXWhsS35IBCDGuwSJu3E7_428EfUvuYMu7AL3em4oqXytU8L1uMbdSon5ipkhV6uknvxXvAEgJEv_gYYMYCn1h068d7-SZdo626bAynHIbB0rZSZ6k9UkobujA5gQkyUt7uvQvXb/s320/Screen+Shot+2556-03-05+at+11.10.27+PM.png&quot; width=&quot;221&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;หน้าจอสำหรับ การ ให้สิทธิการเข้าถึง Profile&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp;เมื่อเรากดที่ปุ่ม &lt;b&gt;Allow All&lt;/b&gt; ก็จะพบกับ Message แบบนี้ครับ&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtmqUqtj0Akgp5SHAZq2ahTAqg0QcinaeWY1V3tWAFo9jl7ZscANbx5k0GtY-IFEZH4UY5BkEXhl_9N4CESrH3wGI_m0QUnftVvz0uqlKCUOWgQKXRc0Kx3nnFce78y0qYwCFhVquv_5Cv/s1600/Screen+Shot+2556-03-05+at+11.13.02+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtmqUqtj0Akgp5SHAZq2ahTAqg0QcinaeWY1V3tWAFo9jl7ZscANbx5k0GtY-IFEZH4UY5BkEXhl_9N4CESrH3wGI_m0QUnftVvz0uqlKCUOWgQKXRc0Kx3nnFce78y0qYwCFhVquv_5Cv/s1600/Screen+Shot+2556-03-05+at+11.13.02+PM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;เป็นอันเรียบร้อยในส่วนของ การ Login ด้วย คำสั่ง &lt;b&gt;Titanium.Facebook.authorize&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt; &lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;มาต่อกันที่วิธีที่ 2 ครับ วิธีการนี้จะเป็นการสร้างปุ่ม &lt;b&gt;LoginButton&lt;/b&gt; สำหรับการเรียกหน้าจอการ &lt;b&gt;Login&lt;/b&gt; เข้าสู่ &lt;b&gt;Facebook&lt;/b&gt; ครับ สำหรับวิธีการก็สามารถเขียนด้วยคำสั่งแบบนี้ครับ&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;notpretty&quot; id=&quot;ext-gen1298&quot; style=&quot;background-color: #f7f7f7; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; border-top-left-radius: 5px; border-top-right-radius: 5px; border: 1px solid rgb(232, 232, 232); box-sizing: border-box; color: #314e64; font-family: Menlo, &#39;Courier New&#39;, Courier, monospace; font-size: 13px; line-height: 1.3em; margin-bottom: 14px; margin-top: 10px; max-width: 900px; overflow-x: auto; overflow-y: hidden; padding: 10px 12px;&quot;&gt;Titanium.Facebook.appid = &#39;&lt;span style=&quot;color: black; font-family: monospace; font-size: small; line-height: normal; white-space: normal;&quot;&gt;253673451435346&lt;/span&gt;&#39;;
Titanium.Facebook.permissions = [&#39;publish_stream&#39;];
Titanium.Facebook.addEventListener(&#39;login&#39;, function(e) {
    if (e.success) {
        alert(&#39;Logged in&#39;);
    }
});
    
win.add(Titanium.Facebook.createLoginButton({
    top : 50,
    style : Titanium.Facebook.BUTTON_STYLE_WIDE
}));&lt;/pre&gt;&lt;br /&gt;
&lt;span style=&quot;color: #990000;&quot;&gt;** อย่าลืมสร้าง Window มารองรับก่อนนะครับ&lt;/span&gt;&lt;br /&gt;
เมื่อทำการรันก็จะพบกับหน้าจอแบบนี้ครับ&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMpQCGv37cfEstxWa9vwNFzp649yl0T7wmt6c22Uaxder9DRFiCuNe1Ld7UJJCM1h-AFnbxPPIxUwi2s_6ucfowzzVpbK9JXGBCNRPmE5ar_YArp3410ArLb06CkLCUYnhTPLbMnsuumZx/s1600/Screen+Shot+2556-03-05+at+11.17.42+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMpQCGv37cfEstxWa9vwNFzp649yl0T7wmt6c22Uaxder9DRFiCuNe1Ld7UJJCM1h-AFnbxPPIxUwi2s_6ucfowzzVpbK9JXGBCNRPmE5ar_YArp3410ArLb06CkLCUYnhTPLbMnsuumZx/s320/Screen+Shot+2556-03-05+at+11.17.42+PM.png&quot; width=&quot;211&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;เมื่อกดที่ปุ่ม &lt;b&gt;Login with Facebook&lt;/b&gt; ก็จะเข้าสู่หน้าจอการ &lt;b&gt;Login&lt;/b&gt; ตามลำดับ&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt; &lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;ในส่วนของการ &lt;b&gt;Logout&lt;/b&gt; จาก &lt;b&gt;Facebook&lt;/b&gt; สามารถสั่งให้ &lt;b&gt;Application&lt;/b&gt; ของเรา &lt;b&gt;Logout&lt;/b&gt; ออกจาก Facebook ได้ด้วยคำสั่ง&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;notpretty&quot; id=&quot;ext-gen1297&quot; style=&quot;background-color: #f7f7f7; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; border-top-left-radius: 5px; border-top-right-radius: 5px; border: 1px solid rgb(232, 232, 232); box-sizing: border-box; color: #314e64; font-family: Menlo, &#39;Courier New&#39;, Courier, monospace; font-size: 13px; line-height: 1.3em; margin-bottom: 14px; margin-top: 10px; max-width: 900px; overflow-x: auto; overflow-y: hidden; padding: 10px 12px;&quot;&gt;Titanium.Facebook.logout();&lt;/pre&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;เป็นอย่างไรกันบ้างครับสำหรับการ &lt;b&gt;Login&lt;/b&gt; เข้าสู่ &lt;b&gt;Application&lt;/b&gt; ด้วย &lt;b&gt;Facebook&lt;/b&gt; จะเห็นได้ว่า สามารถทำได้อย่างง่ายดายเลยนะครับ ในบทความหน้านั้นผมจะแนะนำวิธีการดังข้อมูล &lt;b&gt;Profile&lt;/b&gt; ของ &lt;b&gt;User&lt;/b&gt; มาใช้งานนะครับ&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/1132273255167409195/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2013/03/titanium-mobile-using-facebook-login.html#comment-form' title='2 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/1132273255167409195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/1132273255167409195'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2013/03/titanium-mobile-using-facebook-login.html' title='การใช้ Facebook เพื่อจัดการระบบ Login และ User ด้วย Titanium Mobile'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3a07B0tqjLX6bQkbPcCzE4_B68t_cVc1eRXciTCUNCeM_3LXxtSoChly4LoiP4cw06CYotNXQ-1xEOzpnmpA-lOBdS12_VJRyBxxLFOYYQG-x47Ugb5_7yRswWxiS2DzHkAtA6nRdBVne/s72-c/fbLogo.jpeg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-2726938158026085312</id><published>2013-02-25T20:21:00.001+07:00</published><updated>2013-02-25T20:21:18.410+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="Facebook API"/><category scheme="http://www.blogger.com/atom/ns#" term="Facebook Development"/><category scheme="http://www.blogger.com/atom/ns#" term="Graph API"/><category scheme="http://www.blogger.com/atom/ns#" term="REST API"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><title type='text'>Titanium Mobile กับ Facebook</title><content type='html'>&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;ต้องยอมรับกันนะครับว่า ในยุคสมัยนี้ Social Network นั้นมีผลต่อเราเกือบทุก ๆ คน เนื่องจาก Social Network นั้นสามารถเข้าถึงได้ทุกเพศทุกวัย ดังนั้นสิ่งที่ขาดไม่ได้เลยสำหรับ Application บน Mobile &amp;nbsp;Device นั่นก็คือ ความสามารถในการเชื่อมต่อกับ ระบบ Social Network ที่มีอยู่ในปัจจุบัน เช่น &quot;Facebook&quot;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3a07B0tqjLX6bQkbPcCzE4_B68t_cVc1eRXciTCUNCeM_3LXxtSoChly4LoiP4cw06CYotNXQ-1xEOzpnmpA-lOBdS12_VJRyBxxLFOYYQG-x47Ugb5_7yRswWxiS2DzHkAtA6nRdBVne/s1600/fbLogo.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3a07B0tqjLX6bQkbPcCzE4_B68t_cVc1eRXciTCUNCeM_3LXxtSoChly4LoiP4cw06CYotNXQ-1xEOzpnmpA-lOBdS12_VJRyBxxLFOYYQG-x47Ugb5_7yRswWxiS2DzHkAtA6nRdBVne/s1600/fbLogo.jpeg&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;โดยใน Titanium Mobile เองก็มี &amp;nbsp;API สำหรับการเชื่อมต่อกับ Facebook โดยตรง และสามารถเชื่อมต่อแบบง่าย ๆ ด้วย Module ที่ติดมากับ SDK ซึ่งนั่นก็คือ&lt;/span&gt;&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;Titanium.Facebook&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;แล้วเจ้า API Titanium.Facebook นี้รองรับการทำงานอะไรบ้าง&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;จัดการระบบ Login เพื่อใช้งาน Application หรือ จัดเก็บ User ใน Application ของเราเอง&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;เรียกใช้งาน Facebook Graph API ผ่านทาง requestWithGraphPath&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;เรียกใช้งาน&amp;nbsp;Facebook REST API ผ่านทาง Request&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;Post ข้อความหรืออื่น ๆ ผ่านทาง Facebook Dialog&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;h2&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;การใช้งาน Facebook เพื่อจัดการระบบ Login และ Users&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;หาก Application ของเรานั้นต้องการการ Login เข้าสู่ Facebook ก่อนเพื่อที่จะกำหนดสิทธิต่าง ๆ ให้กับ ผู้ใช้ เราสามารถทำได้ 2 วิธีด้วยกันก็คือ&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;เรียกใช้งาน ผ่านทาง Titanium.Facebook.authorize&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;สร้างปุ่มสำหรับ Login ด้วยคำสั่ง Titanium.Facebook.LoginButton&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;แต่ก่อนอื่นเลยนั้นสิ่งที่เราต้องมีก็คือ Facebook App ID โดยที่เราสามารถทำการ สร้าง App ID และ Permission ของ Application เราโดยผ่านทาง Facebook Developer App :&amp;nbsp;&lt;a href=&quot;https://developers.facebook.com/apps&quot;&gt;developers.facebook.com/apps&lt;/a&gt;&amp;nbsp;ส่วนในเรื่องของ Permission ของ Facebook นั้น สามารถเข้าไปอ่านกันได้ที่ &lt;a href=&quot;http://developers.facebook.com/docs/reference/login/#permissions&quot; target=&quot;_blank&quot;&gt;Facebook Permission Reference&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Facebook Graph API&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;Facebook Graph API เป็นสิ่งที่ทาง Facebook ได้จัดเตรียมในรูปแบบของ Service เพื่อให้ทางนักพัฒนานั้นสามารถนำเอาข้อมูลของผู้ใช้ , รายชื่อเพื่อ , &amp;nbsp;Feed และ อื่น ๆ โดยที่ทาง Facebook นั้นจะเรียกสิ่งต่าง ๆ เหล่านี้ในรูปแบบของ Object เช่น Object User , Object Photo เป็นต้น&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;เราสามารถเรียกใช้งาน Graph API เพื่อนำเอาข้อมูลเหล่านี้ออกมาด้วยคำสั่ง&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;code&gt;Titanium.Facebook.requestWithGraphPath&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;ในส่วนของรายละเอียด API นี้สามารถอ่านได้ที่ &amp;nbsp;&lt;span id=&quot;goog_939962107&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://developers.facebook.com/docs/reference/api/&quot; target=&quot;_blank&quot;&gt;Facebook Graph API d&lt;span id=&quot;goog_939962108&quot;&gt;&lt;/span&gt;ocumentation&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Facebook REST API&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;Facebook REST API เป็น API ที่เอาไ้ใช้งานในสิ่งต่าง ๆ นอกเหนือจากสิ่งท่ี่ Graph API สามารถทำงานได้&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;โดยเราสามารถเรียกใช้่ REST API นี้ได้ ผ่านทาง คำสั่ง&lt;/span&gt;&lt;/div&gt;
&lt;code&gt;Titanium.Facebook.request&lt;/code&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;ส่วนรายละเอียดของ API นี้สามารถอ่านได้ที่&amp;nbsp;&lt;a href=&quot;http://developers.facebook.com/docs/reference/rest/&quot;&gt;Facebook REST API documentation&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;เอาหล่ะครับ บทความนี้ก็ขอจบลงตรงนี้ก่อน ในบทความหน้าผมจะมานำเสนอวิธีการเขียนเพื่อเรียกใช้งาน Titanium.Facebook นะครับ&amp;nbsp;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/2726938158026085312/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2013/02/titanium-mobile-facebook-connect.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/2726938158026085312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/2726938158026085312'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2013/02/titanium-mobile-facebook-connect.html' title='Titanium Mobile กับ Facebook'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3a07B0tqjLX6bQkbPcCzE4_B68t_cVc1eRXciTCUNCeM_3LXxtSoChly4LoiP4cw06CYotNXQ-1xEOzpnmpA-lOBdS12_VJRyBxxLFOYYQG-x47Ugb5_7yRswWxiS2DzHkAtA6nRdBVne/s72-c/fbLogo.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-1390897527618740965</id><published>2013-01-07T23:47:00.001+07:00</published><updated>2013-02-13T13:08:58.879+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="Contact"/><category scheme="http://www.blogger.com/atom/ns#" term="Contact Picker"/><category scheme="http://www.blogger.com/atom/ns#" term="ios"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Studio"/><title type='text'>ว่าด้วยเรื่องของ Contact บน Titanium Mobile</title><content type='html'>&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;สวัสดีครับ หลังจากห่างหายจากการเขียน บทความไปหลายสัปดาห์ วันนี้ผมขอกลับเข้าไปเรื่องของ &lt;b&gt;Contact &lt;/b&gt;ใน &lt;b&gt;Mobile Device&lt;/b&gt; ของทุก ๆ ท่านก่อนละกันนะครับ โดยปกติแล้วใน OS ไม่ว่าจะทั้ง&lt;b&gt; iOS &lt;/b&gt;หรือ &lt;b&gt;Android &lt;/b&gt;นั้นจะมีโปรแกรม อยู่หนึ่งตัวสำหรับการจัดเก็บรายชื่อต่าง ๆ สำหรับเอาไว้โทรหา หรือ ทำการ ส่ง Email หรือ อื่น ๆ ซึ่งวันนี้ผมจะเสนอเกี่ยวกับการเข้าถึง รายชื่อต่าง ๆ แบบง่าย ๆ กันครับ&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt; &lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Xz1mqnOuCz9kprk6asuYmf4lQZk-mrwwKXnAbI74oJDWw7sPIFDCxEq950k9HiDzOPZLeXbubXfbXOU3LSju-qLDwakGtCddGUZI-qazl0cPG6L5MSyuOCRzideA6upndvVrwvSEnnjh/s1600/icon-contact.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Xz1mqnOuCz9kprk6asuYmf4lQZk-mrwwKXnAbI74oJDWw7sPIFDCxEq950k9HiDzOPZLeXbubXfbXOU3LSju-qLDwakGtCddGUZI-qazl0cPG6L5MSyuOCRzideA6upndvVrwvSEnnjh/s320/icon-contact.png&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;วิธีการเข้าถึงก็สามารถทำได้โดยเขียนคำสั่งแบบนี้ครับ&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;Titanium.Contacts.showContacts&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;ส่วนใน Property ของ Function &lt;b&gt;showContact &lt;/b&gt;นี้มีดังต่อไปนี้ครับ&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;animated &lt;/b&gt;กำหนดให้เมื่อทำการแสดงผลให้แสดง animation หรือไม่&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;fields &amp;nbsp;&lt;/b&gt;ระบุ Fields ที่ต้องการแบบเฉพาะเจาะจง เช่น&amp;nbsp;address&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;selectedPerson &lt;/b&gt;ค่าสำหรับเมื่อรายชื่อนั้นถูกเลือก&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;เอาหล่ะครับเรามาเร่ิมกันเลยดีกว่า เริ่มแรกนั้นก็ ทำการสร้าง window และ ปุ่มอีก 1 ปุ่มครับ&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt; &lt;code&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;var win = Ti.UI.createWindow({&lt;br /&gt;
backgroundColor : &#39;#fff&#39;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var show = Ti.UI.createButton({&lt;br /&gt;
title:&#39;Show picker&#39;,&lt;br /&gt;
top :200&lt;br /&gt;
});&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;span class=&quot;s2&quot; style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;จากนั้นก็ทำการใส่เข้าไปใน Window ที่ได้สร้างเอาไว้ครับ&lt;/span&gt;&lt;/div&gt;
&lt;code&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;win.add(show);&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;แล้วก็ทำการเขียน Event ให้กับ ปุ่ม show ด้วยคำสั่งแบบนี้ครับ&lt;/span&gt;&lt;/div&gt;
&lt;code&gt;
show.addEventListener(&#39;click&#39;, function() {&lt;br /&gt;
Titanium.Contacts.showContacts({&lt;br /&gt;
animated : true,&lt;br /&gt;
});&lt;br /&gt;
});&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;แล้วก็ทำการเปิด window ครับ&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;code&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;win.open();&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;จากนั้นทำการ รันขึ้นมาครับ ก็ จะได้หน้าตาโปรแกรมแบบนี้ ครับ ทดลองกดที่ ปุ่ม Show Picker ครับ ก็จะพบกับ Contact List ขึ้นมา&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimi1Z5TcLanUzJiMl_saQTIQHaiqImscyu7C1RSE5ADS4lPq6OSIga1_Umr0Q7mk-rbaxf3H1Fz9cSUwk7M48xaEiN3BfADmezRUNeRS3Wk5N8fW7pI1D5oYveJ2Q6ZRPiDtHHAhQBCI6u/s1600/win-button.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;307&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimi1Z5TcLanUzJiMl_saQTIQHaiqImscyu7C1RSE5ADS4lPq6OSIga1_Umr0Q7mk-rbaxf3H1Fz9cSUwk7M48xaEiN3BfADmezRUNeRS3Wk5N8fW7pI1D5oYveJ2Q6ZRPiDtHHAhQBCI6u/s400/win-button.png&quot; width=&quot;400&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt; &lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvMhyPNgNtSlyTEtC9Eb8vj67n_ehxhy_ESXl7rnOcPYsnHGNgG-0_gshPcRWHwgg986-5QU20m0nHeg-LTNwztIS5QbodbmVyVW5oc7VjZldgUZwK0x8uQCFuVEegWChfTuzDAokOFa5b/s1600/show-contact.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;327&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvMhyPNgNtSlyTEtC9Eb8vj67n_ehxhy_ESXl7rnOcPYsnHGNgG-0_gshPcRWHwgg986-5QU20m0nHeg-LTNwztIS5QbodbmVyVW5oc7VjZldgUZwK0x8uQCFuVEegWChfTuzDAokOFa5b/s400/show-contact.png&quot; width=&quot;400&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;หากต้องการเลือกรายการชื่อให้เพิ่มคำสั่ง&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;code&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;selectedPerson&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;ลงไปในส่วนของการเพิ่ม Event Click แบบนี้ครับ&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;code&gt;show.addEventListener(&#39;click&#39;, function() {&lt;br /&gt;
Titanium.Contacts.showContacts({&lt;br /&gt;
animated : true,&lt;br /&gt;
selectedPerson : function(value){&lt;br /&gt;
var p = value.person;&lt;br /&gt;
alert(p.fullName); &lt;br /&gt;
}&lt;br /&gt;
});&lt;br /&gt;
});&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s4&quot; style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;ก็สามารถที่จะนำเอาข้อมูลของ Contact ไปใช้งานได้แล้วหล่ะครับ ในส่วนของรายละเอียด ของ Object Person นั้นสามารถเข้าไปดูรายละเอียดเพิ่มเติมได้ที่ &lt;a href=&quot;http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.Contacts.Person&quot; target=&quot;_blank&quot;&gt;Titanium Document&lt;/a&gt;&amp;nbsp;เนื่องจากรายละเอียดของ Object นี้มีเยอะมาก ๆ ทำให้ไม่สามารถนำมาไว้ที่นี่ได้นะครับ&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt; &lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyTjl6HKywdqiIb_f-4vOQ05lDHv19Gkx9f6P6xbWykCMnospi_WIX454wA2R-qUoCo2bOwPhBv3kwAn2peV6yvDtcJSVpCtqK4P-EogBVBYjHE6AucPuB0nk7xynK3PztrFmGKb3ZefMO/s1600/message.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;128&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyTjl6HKywdqiIb_f-4vOQ05lDHv19Gkx9f6P6xbWykCMnospi_WIX454wA2R-qUoCo2bOwPhBv3kwAn2peV6yvDtcJSVpCtqK4P-EogBVBYjHE6AucPuB0nk7xynK3PztrFmGKb3ZefMO/s400/message.png&quot; width=&quot;400&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt; &lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;ตอนนี้ของพักเรื่อง Alloy Framework เอาไว้ก่อนเพราะว่าไม่ค่อยมีเวลาที่จะศึกษาเพิ่มเติมจริง ๆ ครับ ยังงัยก็จะพยายามหาตัวอย่างการใช้งานของ Alloy Framework มาให้ได้ดูกันนะครับ&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/1390897527618740965/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2013/01/how-to-use-titanium-contact.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/1390897527618740965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/1390897527618740965'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2013/01/how-to-use-titanium-contact.html' title='ว่าด้วยเรื่องของ Contact บน Titanium Mobile'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Xz1mqnOuCz9kprk6asuYmf4lQZk-mrwwKXnAbI74oJDWw7sPIFDCxEq950k9HiDzOPZLeXbubXfbXOU3LSju-qLDwakGtCddGUZI-qazl0cPG6L5MSyuOCRzideA6upndvVrwvSEnnjh/s72-c/icon-contact.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-1674643796175075535</id><published>2012-12-22T23:15:00.003+07:00</published><updated>2013-01-08T09:23:02.576+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Alloy Framework"/><category scheme="http://www.blogger.com/atom/ns#" term="MVC"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile 3.0"/><title type='text'>รู้จักกับ Alloy Framework บน Titanium Mobile</title><content type='html'>หลังจากที่ ทาง&amp;nbsp;&lt;b&gt;Appcelerator&lt;/b&gt;&amp;nbsp;ได้ทำการ update &lt;b&gt;Titanium Studio&lt;/b&gt; เป็น Version 3.0 นั้นในตัว Titanium นั้นมีการรองรับ Feature ใหม่ ๆ ต่าง ๆ มากมาย ซึ่งหนึ่งในนั้นก็ คือ Alloy Framework นั่นเองครับ&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE3sLkGn7AHU7xb1a_8U0KScAFiDnG-ecbV1VrJrSUEoO2fb63Or5pyR9HnZuGDSxnYBL1OpPbYRhe5xWqv5-bMk-noxXRG4EGccAzfenPD7NGj4IrM7np8Wz68mMZd4XJ7Wgt6d76O3rs/s1600/Screen+Shot+2012-12-22+at+23.07.24+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;126&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE3sLkGn7AHU7xb1a_8U0KScAFiDnG-ecbV1VrJrSUEoO2fb63Or5pyR9HnZuGDSxnYBL1OpPbYRhe5xWqv5-bMk-noxXRG4EGccAzfenPD7NGj4IrM7np8Wz68mMZd4XJ7Wgt6d76O3rs/s400/Screen+Shot+2012-12-22+at+23.07.24+PM.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h3&gt;
&lt;b&gt;&lt;i&gt;Alloy Framework คืออะไร ?&lt;/i&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;br /&gt;
&lt;b&gt;Alloy&lt;/b&gt; เป็น &lt;b&gt;MVC Framework&lt;/b&gt; ที่ทำให้สามารถพัฒนา Application บน Mobile ได้อย่างรวดเร็วมากยิ่งขึ้น ซึ่งตัว Framework นี้จะทำให้การพัฒนา Mobile Application นี้สามารถทำงานได้อย่างมีประสิทธิภาพมากยิ่งขึ้น ซึ่งไม่เพียงแต่สามารถพัฒนา Application ได้อย่างรวดเร็ว ยังสามารถที่จะนำเอา Code ที่ถูกเขียนขึ้นนำกลับมา Reuse ได้อย่างมีประสิทธิภาพ&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
คุณสมบัติของ Alloy Framework&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;UI และ ส่วนควบคุมการทำงาน ถูกแยกออกจากกันเหมือนกันกับ MVC โดยทั่ว ๆ ไป&lt;/li&gt;
&lt;li&gt;พัฒนา Application โดยใช้ &lt;b&gt;XML&lt;/b&gt; และ &lt;b&gt;JSON&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;มีการตรวจสอบระยะเวลาในการ Complie&lt;/li&gt;
&lt;li&gt;รองรับการใช้งาน Widgets และ Templates&lt;/li&gt;
&lt;li&gt;รองรับการทำงาน &lt;b&gt;Backbone.js&lt;/b&gt; และ &lt;b&gt;Underscore.js&lt;/b&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;รองรับการทำ Code generation ผ่านทาง &lt;b&gt;Uglify.JS&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;รองรับการทำงานแบบ &lt;b&gt;Command Line interface&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
รู้จักกับ Alloy Framework ไปแล้วในบทความนหน้านั้น ผมจะกลับมานำเสนอ วิธีการใช้งาน Alloy Framework กันนะครับ ส่วนใครใจร้อนอยากศึกษาเรื่องนี้ก่อน ก็สามารถเข้าไปศึกษาก่อนได้ที่ &lt;a href=&quot;http://projects.appcelerator.com/alloy/docs/Alloy-bootstrap/index.html&quot; target=&quot;_blank&quot;&gt;Alloy From Appcelerator&lt;/a&gt;&amp;nbsp;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/1674643796175075535/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2012/12/alloy-framework-titanium-mobile.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/1674643796175075535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/1674643796175075535'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2012/12/alloy-framework-titanium-mobile.html' title='รู้จักกับ Alloy Framework บน Titanium Mobile'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE3sLkGn7AHU7xb1a_8U0KScAFiDnG-ecbV1VrJrSUEoO2fb63Or5pyR9HnZuGDSxnYBL1OpPbYRhe5xWqv5-bMk-noxXRG4EGccAzfenPD7NGj4IrM7np8Wz68mMZd4XJ7Wgt6d76O3rs/s72-c/Screen+Shot+2012-12-22+at+23.07.24+PM.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-7643475759697993720</id><published>2012-12-16T00:39:00.001+07:00</published><updated>2012-12-16T00:39:46.242+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Action Bar"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium SDK 3.0"/><category scheme="http://www.blogger.com/atom/ns#" term="Update"/><title type='text'>Titanium Mobile Update 3.0</title><content type='html'>&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;วันนี้ทาง &lt;b&gt;Appcelerator&lt;/b&gt; ได้ทำการ ปล่อย Update ตัว &lt;b&gt;Titanium Mobile&lt;/b&gt; เป็น Version 3.0 โดยใน Version 3.0 นี้นั้น ส่วนใหญ่จะเป็นการ Update เพื่อรองรับ Feature ใหม่ ๆ ของ Android Version ใหม่ ๆ นั่นเองครับ&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsvAupMDKESHdewxlaCc4BeRNRBp5UaHTq96n8shhydycVs8npZ1J3Nmv4kyCYEjKAsbo6_AgNwxDf_UKQ9IgAnxm0vWmiQEkJWbFfYsPPZ_y5TjUpaFggdDiDnwkj6oRPw6Y-O_fqKMM4/s1600/Screen+Shot+2012-12-16+at+24.34.33+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;272&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsvAupMDKESHdewxlaCc4BeRNRBp5UaHTq96n8shhydycVs8npZ1J3Nmv4kyCYEjKAsbo6_AgNwxDf_UKQ9IgAnxm0vWmiQEkJWbFfYsPPZ_y5TjUpaFggdDiDnwkj6oRPw6Y-O_fqKMM4/s400/Screen+Shot+2012-12-16+at+24.34.33+AM.png&quot; width=&quot;400&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;โดยใน Version 3.0 ของ Titanium นี้จะรองรับการทำงานของ Android รุ่นใหม่ ๆ เป็นหลักโดยมีการเปลี่ยนแปลงดังต่อไปนี้&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;รองรับการทำงานของ &lt;b&gt;Action Bar&lt;/b&gt; เมื่อเราทำการสร้าง Application โดยเลือกใช้&amp;nbsp;&lt;span style=&quot;background-color: white;&quot;&gt;targetSdkVersion เป็น Version 11 (Android 3.0/Honey Comb) &amp;nbsp;ขึ้นไปนั้น Object Tab Group จะถูกสร้างขึ้นมาพร้อมกับ เจ้า Action Bar นี้&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;แก้ไขการใช้งาน&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;b&gt;ActivityIndicator&lt;/b&gt; ให้เป็นเหมือนกับ iOS โดยจากเดิมที่ ActivityIndicator ของ Android นั้นจะมีลักษณะเป็น Modal Dialog จะถูกปรับเปลี่ยนแก้ไขให้เป็น object เพื่อที่จะสามารถนำไปวางไว้บน View หรือ Window ได้&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;ในส่วนของ &lt;b&gt;Feature&lt;/b&gt; ใหม่ ๆ ที่เกิดขึ้นบน &lt;b&gt;SDK Version 3.0&lt;/b&gt; นี้จะมีอะไรบ้างนั้น เราไปดูกันครับ&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;b&gt;On-Device Debugging&lt;/b&gt;&lt;/span&gt;&amp;nbsp;รองรับการ Debug บน Device โดยวิธีการนั้น สามารถเข้าไปอ่านได้ตามนี้ครับ &lt;a href=&quot;http://docs.appcelerator.com/titanium/latest/#!/guide/Debugging_on_iOS_Devices&quot; target=&quot;_blank&quot;&gt;iOS Device Debugging&lt;/a&gt; ,&lt;a href=&quot;http://docs.appcelerator.com/titanium/latest/#!/guide/Debugging_on_Android_Devices&quot; target=&quot;_blank&quot;&gt;Android Device Debugging&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Alloy Framework &lt;/b&gt;รองรับการทำงานแบบ MVC บน Titanium Mobile ในส่วนของรายละเอียดและวิธีการ ผมขออธิบายภายหลังนะครับ หรือ ถ้าอยากไปศึกษาก่อนก็สามารถ เข้าไปอ่านกันได้ที่ &amp;nbsp;&lt;a href=&quot;http://docs.appcelerator.com/titanium/latest/#!/guide/Alloy_Quick_Start&quot; target=&quot;_blank&quot;&gt;Alloy Framework&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Titanium Command-Line Interface &lt;/b&gt;รองรับการทำงานผ่านทาง Command-Line ศึกษาเพิ่มเติมได้ที่ &lt;a href=&quot;http://docs.appcelerator.com/titanium/latest/#!/guide/Titanium_Command-Line_Interface_Reference&quot; target=&quot;_blank&quot;&gt;Titanium Command-Line Interface&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;UI Event Bubbling Changes ปรับเปลี่ยนวิธีการเรียกใช้งาน Event &lt;/b&gt;(ตรงส่วนนี้ขอดูรายละเอียดก่อนแล้วค่อยอธิบายต่อในภายภาคหน้าเนื่องจาก ผมอ่านแล้วก็ยัง งง ๆ อยู่ว่ามันเปลี่ยนไปอย่างไร)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;และมีการแก้ Bug ต่าง ๆ ดังนี้ครับ&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul style=&quot;background-color: white; margin: 1em 0px; padding: 0px 0px 0px 40px;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;https://jira.appcelerator.org/browse/TIMOB-11755&quot;&gt;TIMOB-11755&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;https://jira.appcelerator.org/browse/TIMOB-11756&quot;&gt;TIMOB-11756&lt;/a&gt;&amp;nbsp;เพิ่ม Property&amp;nbsp;&amp;nbsp;username, password และ domain ให้กับ HTTPClient ซึ่งตอนนี้ยังรองรับ เฉพาะ iOS และ Android เท่านั้น&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;https://jira.appcelerator.org/browse/TIMOB-10232&quot;&gt;TIMOB-10232&lt;/a&gt;&amp;nbsp;Android: รองรับการตรวจจับ Event บน Keyboard&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;สำหรับ Version 3.0 นื้ถือเป็นการ Update ครั้งใหญ่ของ Titanium Studio เลยก็ว่าได้เนื่องจากขนาดของตัว Update นั้นมีขนาดค่อนข้างใหญ่ ส่วนวิธีการ Update นั้นสามารถทำได้ง่าย ๆ ครับ เพียงแค่เปิด Titanium Studio ขึ้นมา ก็จะพบกับ Message แจ้งเตือนเรื่องการ Update ก็สามารถทำการ Update ได้ทันทีครับ&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPQ7LqvKKMzvaWp1yA-C61IwjDUfy8JEeIhz6Da39nN5up33DSRGcEfYU4voCYzRriajrsCQ40p8cs7uDMOvX3_v3SH0523tx70poq9l-SKkQEmEqhSZIMbWE1j4RLL6dBS9VliXQFew15/s1600/Screen+Shot+2012-12-16+at+24.04.20+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPQ7LqvKKMzvaWp1yA-C61IwjDUfy8JEeIhz6Da39nN5up33DSRGcEfYU4voCYzRriajrsCQ40p8cs7uDMOvX3_v3SH0523tx70poq9l-SKkQEmEqhSZIMbWE1j4RLL6dBS9VliXQFew15/s1600/Screen+Shot+2012-12-16+at+24.04.20+AM.png&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;อย่าลืม Update กันนะครับ เพื่อรองรับ Feature ใหม่ ๆ นะครับ&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; font-family: &#39;Heletica Neue&#39;, Tahoma, Arial, sans-serif; font-size: 12px; margin-bottom: 15px; margin-top: 15px;&quot;&gt;
&lt;a href=&quot;&quot; name=&quot;known_issues&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/7643475759697993720/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2012/12/titanium-mobile-update-30.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/7643475759697993720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/7643475759697993720'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2012/12/titanium-mobile-update-30.html' title='Titanium Mobile Update 3.0'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsvAupMDKESHdewxlaCc4BeRNRBp5UaHTq96n8shhydycVs8npZ1J3Nmv4kyCYEjKAsbo6_AgNwxDf_UKQ9IgAnxm0vWmiQEkJWbFfYsPPZ_y5TjUpaFggdDiDnwkj6oRPw6Y-O_fqKMM4/s72-c/Screen+Shot+2012-12-16+at+24.34.33+AM.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-472404077478084921</id><published>2012-12-02T23:16:00.001+07:00</published><updated>2012-12-02T23:16:34.684+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ios"/><category scheme="http://www.blogger.com/atom/ns#" term="Multi Column"/><category scheme="http://www.blogger.com/atom/ns#" term="Picker"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><title type='text'>การใช้งาน Picker แบบ Multi Column (สำหรับ iOS เท่านั้น)</title><content type='html'>หลังจากที่เราได้รู้จักวิธีการใช้งาน Picker แบบ ธรรมดา ๆ ไปแล้ว ในบทความ&amp;nbsp;&lt;a href=&quot;http://www.mobidevthai.com/2012/11/picker-basic-titamium-mobile.html&quot; target=&quot;_blank&quot;&gt;การใช้งาน Picker ใน Titanium Mobile&lt;/a&gt;&amp;nbsp;ในบทความนี้ผมจะนำเสนอการใช้งาน Picker แบบ Multi Column นะครับ&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbbg_CWi_ty5DWQpIBSON9zO4fW90rVcnK9YBnfx9brjF1BKED8_R4dD-wTlnkoOkimejgfyt1DeV-Op9mc2-ymXGUxOVMZTEP71dmPIwQYpC52DBm8yGr9SJr0lOgRYOWO_RYlCi0-94p/s1600/Picker-multi-column.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;การใช้งาน Picker แบบ Multi Column&quot; border=&quot;0&quot; height=&quot;213&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbbg_CWi_ty5DWQpIBSON9zO4fW90rVcnK9YBnfx9brjF1BKED8_R4dD-wTlnkoOkimejgfyt1DeV-Op9mc2-ymXGUxOVMZTEP71dmPIwQYpC52DBm8yGr9SJr0lOgRYOWO_RYlCi0-94p/s320/Picker-multi-column.png&quot; title=&quot;การใช้งาน Picker แบบ Multi Column&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;การใช้งาน Picker แบบ Multi Column นั้น ก็จะมีวิธีการเหมือนกับการใช้งาน Picker แบบธรรมดา ๆ ซึ่งก็จะเริ่มจากสร้าง Picker ก่อนครับ&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;var picker = Ti.UI.createPicker({&lt;br /&gt;
bottom : 0&lt;br /&gt;
});&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;จากนั้นก็ทำการสร้างข้อมูลแบบ Multi Column แรก โดยเริ่มจากการสร้าง&amp;nbsp;&lt;/span&gt;PickerColumn&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;code&gt;var column1 = Ti.UI.createPickerColumn({opacity:0});&lt;br /&gt;
column1.addRow(Ti.UI.createPickerRow({title:&#39;Bananas&#39;}));&lt;br /&gt;
column1.addRow(Ti.UI.createPickerRow({title:&#39;Strawberries&#39;}));&lt;br /&gt;
column1.addRow(Ti.UI.createPickerRow({title:&#39;Mangos&#39;}));&lt;br /&gt;
column1.addRow(Ti.UI.createPickerRow({title:&#39;Grapes&#39;}));&lt;br /&gt;
&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
จากนั้นทำการสร้าง PickerColumn อันที่ สอง&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;code&gt;var column2 = Ti.UI.createPickerColumn();&lt;br /&gt;
column2.addRow(Ti.UI.createPickerRow({title:&#39;red&#39;}));&lt;br /&gt;
column2.addRow(Ti.UI.createPickerRow({title:&#39;green&#39;}));&lt;br /&gt;
column2.addRow(Ti.UI.createPickerRow({title:&#39;blue&#39;}));&lt;br /&gt;
column2.addRow(Ti.UI.createPickerRow({title:&#39;orange&#39;}));&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
จากนั้นก็ทำการ นำเอา Picker ทั้งสองไปใส่ใน Picker ด้วยคำสั่ง&lt;/div&gt;
&lt;code&gt;picker.add([column1,column2]);&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
ก็จะได้ Picker ที่เป็น &amp;nbsp;2 Column ตามที่ต้องการแล้วครับ&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbbg_CWi_ty5DWQpIBSON9zO4fW90rVcnK9YBnfx9brjF1BKED8_R4dD-wTlnkoOkimejgfyt1DeV-Op9mc2-ymXGUxOVMZTEP71dmPIwQYpC52DBm8yGr9SJr0lOgRYOWO_RYlCi0-94p/s1600/Picker-multi-column.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img alt=&quot;การใช้งาน Picker แบบ Multi Column&quot; border=&quot;0&quot; height=&quot;213&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbbg_CWi_ty5DWQpIBSON9zO4fW90rVcnK9YBnfx9brjF1BKED8_R4dD-wTlnkoOkimejgfyt1DeV-Op9mc2-ymXGUxOVMZTEP71dmPIwQYpC52DBm8yGr9SJr0lOgRYOWO_RYlCi0-94p/s320/Picker-multi-column.png&quot; title=&quot;การใช้งาน Picker แบบ Multi Column&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
ส่วนการนำค่าจาก Picker ไปใช้งานนั้นก็สามารถใช้ Event Change เพื่อนำค่าที่เลือกไปใช้งานต่อไป ดังนี้&lt;/div&gt;
&lt;code&gt;picker.addEventListener(&#39;change&#39;,function(e)&lt;br /&gt;
{&lt;br /&gt;
    alert(e.rowIndex +  &#39; : &#39; + e.columnIndex); &lt;br /&gt;
}&lt;/code&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/472404077478084921/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2012/12/multi-column-picker-titanium-mobile.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/472404077478084921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/472404077478084921'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2012/12/multi-column-picker-titanium-mobile.html' title='การใช้งาน Picker แบบ Multi Column (สำหรับ iOS เท่านั้น)'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbbg_CWi_ty5DWQpIBSON9zO4fW90rVcnK9YBnfx9brjF1BKED8_R4dD-wTlnkoOkimejgfyt1DeV-Op9mc2-ymXGUxOVMZTEP71dmPIwQYpC52DBm8yGr9SJr0lOgRYOWO_RYlCi0-94p/s72-c/Picker-multi-column.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-8622651957964873407</id><published>2012-11-26T22:48:00.004+07:00</published><updated>2012-11-26T22:48:52.923+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Picker"/><category scheme="http://www.blogger.com/atom/ns#" term="Picker"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><title type='text'>การใช้งาน Picker  ใน Titanium Mobile</title><content type='html'>หลังจากห่างหายจากการเขียนบทความเรื่องนี้ไปสักพัก เนื่องจากติดภาระกิจบางประการทำให้ไม่สามารถทำการเขียนบทความได้ แต่วันนี้มีเวลาแล้ว เรามาต่อกันเลยดีกว่าครับ กับ Object ที่มีเอาไว้ให้ผู้ใช้ทั้งหลายได้ทำการเลือกข้อมูลต่าง ๆ ได้ตามที่ต้องการ Object นั้นคือ Picker ครับ&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEI7xSkDCKJ_P0u3ZI8HLy7ei-UDHaZb8BUDrK0YVAij33HDXX51v-rxygptAdPPidAPVqAhxvDU9G5OOVFfP7uo8YxLhigynMmInzLkctrOYOkfTJI-OGnxETtoYIP6Fwm06q_KA-e9T4/s1600/Screen+Shot+2012-11-26+at+22.35.30+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Picker-Basic&quot; border=&quot;0&quot; height=&quot;219&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEI7xSkDCKJ_P0u3ZI8HLy7ei-UDHaZb8BUDrK0YVAij33HDXX51v-rxygptAdPPidAPVqAhxvDU9G5OOVFfP7uo8YxLhigynMmInzLkctrOYOkfTJI-OGnxETtoYIP6Fwm06q_KA-e9T4/s320/Screen+Shot+2012-11-26+at+22.35.30+PM.png&quot; title=&quot;Picker-Basic&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h4&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Picker คืออะไร&lt;/h4&gt;
Picker คือ Object ที่เป็นลักษณะของ List รายการต่าง ๆ ที่มีให้กับผู้ใช้ได้เลือกรายการตามที่เราได้ระบุเอาไว้ มีลักษณะเหมือนกับ Dropdownlist ที่ราใช้กันบน Web Page นั่นเองครับ&lt;br /&gt;
&lt;br /&gt;
วิธีการใช้งาน Picker นั้นก็ง่าย ๆ ครับ เราสามรถสร้าง Picker ขี้นมาได้อย่างง่ายดายด้วยคำสั่ง&lt;br /&gt;
&lt;code&gt;Ti.UI.createPicker&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
โดยเจ้า Picker นี้จะมี Property ที่เราเรียกใช้งานกันบ่อย ก็คือ&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;type เอาไว้สำหรับระบุว่าต้องการให้ Picker นี้แสดงออกมาแบบไหน โดยแบ่งออกมาได้เป็น&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Titanium.UI.PICKER_TYPE_PLAIN เป็นลักษณะการแสดงแบบ ทั่ว ๆ ไปครับ มี Column เดียว (เป็นค่าเริ่มต้นของ Picker)&lt;/li&gt;
&lt;li&gt;Titanium.UI.PICKER_TYPE_DATE แสดงข้อมูลเป็นวันที่&lt;/li&gt;
&lt;li&gt;Titanium.UI.PICKER_TYPE_TIME แสดงข้อมูลเป็นเวลา&lt;/li&gt;
&lt;li&gt;Titanium.UI.PICKER_TYPE_DATE_AND_TIME แสดงข้อมูลเป็นแบบวันที่และเวลา (สำหรับ iOS และ Mobile Web เท่านั้น)&lt;/li&gt;
&lt;li&gt;Titanium.UI.PICKER_TYPE_COUNT_DOWN_TIMER แสดงข้อมูลเป็น ชั่วโมงและนาที (เฉพาะ iOS เท่านั้น)&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;selectionIndicator เอาไว้แสดงตำแหน่งของการเลือก ของ ผู้ใช้ โดยค่าเริ่มต้นจะเป็นค่า False&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
ส่วน &amp;nbsp;Object อื่น ๆ ที่เกียวข้องกับ Picker นี้โดยตรงก็จะประกอบด้วย&lt;/div&gt;
&lt;code&gt;Ti.UI.PickerColumn&lt;br /&gt;
Ti.UI.PickerRow&lt;/code&gt;&lt;br /&gt;
เอาหล่ะครับ ในเมื่อเราได้รู้จักบางกับเจ้า Picker ไปแล้วทีนี้ก็มาถึงเวลาที่จะใช้งานมันจริง ๆ แล้วหล่ะครับ ก่อนอื่นเลยก็ต้องสร้าง Picker ขึ้นมาก่อนครับ&amp;nbsp;&lt;/div&gt;
&lt;code&gt;var picker = Ti.UI.createPicker();&lt;br /&gt;
picker.selectionIndicator = true;&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;จากนั้นเราก็มาสร้างข้อมูลขึ้นมาให้กับ Picker นั้นครับ ด้วยคำสั่ง&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;code&gt;var data = [];&lt;br /&gt;
data[0]=Ti.UI.createPickerRow({title:&#39;Bananas&#39;});&lt;br /&gt;
data[1]=Ti.UI.createPickerRow({title:&#39;Strawberries&#39;});&lt;br /&gt;
data[2]=Ti.UI.createPickerRow({title:&#39;Mangos&#39;});&lt;br /&gt;
data[3]=Ti.UI.createPickerRow({title:&#39;Grapes&#39;});&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
จากนั้นก็ทำการ นำเอา ข้อมูลไปใส่ให้กับ picker ด้วยคำสั่ง&lt;/div&gt;
&lt;code&gt;picker.add(data);&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
จากนั้นก็ทำการ สั่งให้ Picker &amp;nbsp;เลือก รายการแรก&amp;nbsp;&lt;/div&gt;
&lt;code&gt;picker.setSelectedRow(0,1,true);&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s3&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s3&quot;&gt;ก็เป็นอันเสร็จสมบูรณ์ทำการ Run ดูจะพบกับหน้าตาของ Picker แบบนี้ครับ&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s3&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEI7xSkDCKJ_P0u3ZI8HLy7ei-UDHaZb8BUDrK0YVAij33HDXX51v-rxygptAdPPidAPVqAhxvDU9G5OOVFfP7uo8YxLhigynMmInzLkctrOYOkfTJI-OGnxETtoYIP6Fwm06q_KA-e9T4/s1600/Screen+Shot+2012-11-26+at+22.35.30+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;iOS Picker&quot; border=&quot;0&quot; height=&quot;219&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEI7xSkDCKJ_P0u3ZI8HLy7ei-UDHaZb8BUDrK0YVAij33HDXX51v-rxygptAdPPidAPVqAhxvDU9G5OOVFfP7uo8YxLhigynMmInzLkctrOYOkfTJI-OGnxETtoYIP6Fwm06q_KA-e9T4/s320/Screen+Shot+2012-11-26+at+22.35.30+PM.png&quot; title=&quot;iOS Picker&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY7IifgwkC16j83ilFNwIgPud-ciC8BIG8MMxPgZO5BoADBI2MGjhUUzqCnMMb8h9V0gmmAdKjZmt6z0JuNyr5mg-GR-VBripoXsd7UT_dOcCHwrXdF1QYKJ8t-4fRnkGIwLHb7xpY5N3T/s1600/Screen+Shot+2012-11-26+at+22.38.40+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Android Picker&quot; border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY7IifgwkC16j83ilFNwIgPud-ciC8BIG8MMxPgZO5BoADBI2MGjhUUzqCnMMb8h9V0gmmAdKjZmt6z0JuNyr5mg-GR-VBripoXsd7UT_dOcCHwrXdF1QYKJ8t-4fRnkGIwLHb7xpY5N3T/s320/Screen+Shot+2012-11-26+at+22.38.40+PM.png&quot; title=&quot;Android Picker&quot; width=&quot;272&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s3&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
เป็นอย่างไรกันบ้างครับกับ Picker แบบง่าย ๆ ในบทความหน้านั้นจะสร้าง Picker ที่มีความซับซ้อนมากกว่านี้นะครับ อย่าลืมติดตามต่อนะครับ&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/8622651957964873407/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2012/11/picker-basic-titamium-mobile.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/8622651957964873407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/8622651957964873407'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2012/11/picker-basic-titamium-mobile.html' title='การใช้งาน Picker  ใน Titanium Mobile'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEI7xSkDCKJ_P0u3ZI8HLy7ei-UDHaZb8BUDrK0YVAij33HDXX51v-rxygptAdPPidAPVqAhxvDU9G5OOVFfP7uo8YxLhigynMmInzLkctrOYOkfTJI-OGnxETtoYIP6Fwm06q_KA-e9T4/s72-c/Screen+Shot+2012-11-26+at+22.35.30+PM.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-1738392454183330775</id><published>2012-11-13T23:18:00.000+07:00</published><updated>2012-11-13T23:18:02.683+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="ios"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium SDK 2.1.4"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Studio"/><category scheme="http://www.blogger.com/atom/ns#" term="Update"/><title type='text'>Update - Titanium SDK 2.1.4</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;เมื่อวันที่ 12/11/2012  ทาง &lt;a href=&quot;http://www.appcelerator.com/&quot; target=&quot;_blank&quot;&gt;Appcelerator&lt;/a&gt; ได้ออก Update Titanium SDK 2.1.4 มาให้ได้ทำการ Update กัน การ Update ใน Version นี้จะมีอะไรบ้างเราไปดูกันครับ&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt; &lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjcQ_a4bi2eRsjfWosrs_IWE1_PNYrQC_xsa7TzzG4FTB5Y_M088gAlItUrW-enRPe3eM1kG1o1f8S9lodlIIq83BZ0ld4Q-RSL-1kqCSsQoCAzGpthtGNweVZ08RhNi9XYs-Bmiy0k7tX/s1600/banner-sdk.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;95&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjcQ_a4bi2eRsjfWosrs_IWE1_PNYrQC_xsa7TzzG4FTB5Y_M088gAlItUrW-enRPe3eM1kG1o1f8S9lodlIIq83BZ0ld4Q-RSL-1kqCSsQoCAzGpthtGNweVZ08RhNi9XYs-Bmiy0k7tX/s320/banner-sdk.png&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt; &lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;Titanium SDK 2.1.4 นี้เป็นการ แก้บั๊กที่พบเจอในVersion ก่อนหน้านี้นะครับ โดยมีการแก้ไข Bug ดังนี้ครับ&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;สำหรับ iOS&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li class=&quot;li7&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;a href=&quot;https://jira.appcelerator.org/browse/TIMOB-10330&quot; target=&quot;_blank&quot;&gt;TIMOB-10330&lt;/a&gt;&lt;/span&gt;&amp;nbsp;iOS: ScrollView: When &#39;layout&#39; is &#39;horizontal&#39;, content height is not calculated correctly.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li7&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;a href=&quot;https://jira.appcelerator.org/browse/TIMOB-10865&quot; target=&quot;_blank&quot;&gt;TIMOB-10865&lt;/a&gt;&lt;/span&gt;&amp;nbsp;iOS: builder.py adhoc build does not copy resources into project. This fixes a regression in Release 2.1.3.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li7&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;a href=&quot;https://jira.appcelerator.org/browse/TIMOB-11198&quot; target=&quot;_blank&quot;&gt;TIMOB-11198&lt;/a&gt;&lt;/span&gt;&amp;nbsp;iOS: KitchenSink WebViews - An image disappears after reloading a page. This fixes a regression introduced by another web view fix in Release 2.1.3. The regression only occurred on iOS 6 devices.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li7&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;a href=&quot;https://jira.appcelerator.org/browse/TIMOB-11250&quot; target=&quot;_blank&quot;&gt;TIMOB-11250&lt;/a&gt;&lt;/span&gt;&amp;nbsp;iOS: blur() method fails to blur keyboard on textfields with custom toolbar. This fixes a regression in Release 2.1.3.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li7&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;a href=&quot;https://jira.appcelerator.org/browse/TIMOB-11275&quot; target=&quot;_blank&quot;&gt;TIMOB-11275&lt;/a&gt;&lt;/span&gt;&amp;nbsp;iOS: Click event is fired even when click is outside the icon of an item in the Titanium.UI.DashboardView.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li7&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;a href=&quot;https://jira.appcelerator.org/browse/TIMOB-11285&quot; target=&quot;_blank&quot;&gt;TIMOB-11285&lt;/a&gt;&lt;/span&gt;&amp;nbsp;iOS: TextField.blur is having a strange race condition when blurring a textfield and then opening a window. This fix ensures that the keyboard is always dismissed when opening a new window.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li7&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;a href=&quot;https://jira.appcelerator.org/browse/TIMOB-11306&quot; target=&quot;_blank&quot;&gt;TIMOB-11306&lt;/a&gt;&lt;/span&gt;&amp;nbsp;iOS: Subversion directories and files present in .IPA. Fixes a regression where extraneous files were included in the .ipa file.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li7&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;a href=&quot;https://jira.appcelerator.org/browse/TIMOB-11561&quot; target=&quot;_blank&quot;&gt;TIMOB-11561&lt;/a&gt;&lt;/span&gt;&amp;nbsp;iOS: KeyboardToolbar of textField not being displayed on textField.focus(). This fixes a regression in Release 2.1.3. It occured only in the unlikely event of calling focus from the blur event handler.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;สำหรับ Android&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li class=&quot;li7&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;a href=&quot;https://jira.appcelerator.org/browse/TIMOB-9994&quot; target=&quot;_blank&quot;&gt;TIMOB-9994&lt;/a&gt;&lt;/span&gt;&amp;nbsp;Android: postlayout event not fired for labels.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li7&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;a href=&quot;https://jira.appcelerator.org/browse/TIMOB-11358&quot; target=&quot;_blank&quot;&gt;TIMOB-11358&lt;/a&gt;&lt;/span&gt;&amp;nbsp;Android: Many calls to getFile causes local reference table overflow.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li7&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;a href=&quot;https://jira.appcelerator.org/browse/TIMOB-11508&quot; target=&quot;_blank&quot;&gt;TIMOB-11508&lt;/a&gt;&lt;/span&gt;&amp;nbsp;Android: Adding WebView to ScrollView causes ScrollView to be initialized scrolled-down.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li7&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;a href=&quot;https://jira.appcelerator.org/browse/TIMOB-11543&quot; target=&quot;_blank&quot;&gt;TIMOB-11543&lt;/a&gt;&lt;/span&gt;&amp;nbsp;Android: Checkbox-style switch missing label.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;โดยที่ตัว Titanium SDK Version นี้นั้นได้ทำการ ทดสอบบน iPad Mini , iPad 4, iOS 6.0.1 และ Xcode Version 4.5.2 และรองรับการทำงานบน Windows &amp;nbsp;8 อีกด้วย&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;สำหรับขั้นตอนการ Update นั้น สามารถทำได้ โดยเมื่อทำการเปิด Titanium Studio ขึ้นมานั้น ก็จะมีข้อความ ให้ ทำการ Update ครับ&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;ul class=&quot;ul1&quot;&gt;&lt;/ul&gt;
&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-I3NFIMguPY4iypQT3K_GVuu5N9jBUsWtuKxEGV2ynNP5YZObsTaLPRULa5L12PsumtP8DXtjzGHQiFHdVqWxB-1qwImCtaBE17ISB66tD3c6bxS8eJGkXDYSuJu-Way1EDSxUdq_xhlg/s1600/Screen+Shot+2012-11-13+at+23.09.56+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;img alt=&quot;Titanium-sdk-2.1.4&quot; border=&quot;0&quot; height=&quot;75&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-I3NFIMguPY4iypQT3K_GVuu5N9jBUsWtuKxEGV2ynNP5YZObsTaLPRULa5L12PsumtP8DXtjzGHQiFHdVqWxB-1qwImCtaBE17ISB66tD3c6bxS8eJGkXDYSuJu-Way1EDSxUdq_xhlg/s400/Screen+Shot+2012-11-13+at+23.09.56+PM.png&quot; title=&quot;Titanium-sdk-2.1.4&quot; width=&quot;400&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;Titanium SDK 2.1.4&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;เมื่อกดเข้าไปก็จะพบกับหน้าจอ แบบนี้&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2U5dWdAzxykVDAFiIjT3Mgu8Qs8FD5l7qJIyn0eGHUYa2AUeK9apiFcHlsQt8sUlDi7yDivZXJ1cdgNr3sJNzQAFqGbUuJf5fnO5k6UMr0HYNQP0uYeHEVbm9Sso3etfxe18iUzK6CecV/s1600/Screen+Shot+2012-11-13+at+23.10.44+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;img alt=&quot;Titanium-Sdk-2-1-4&quot; border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2U5dWdAzxykVDAFiIjT3Mgu8Qs8FD5l7qJIyn0eGHUYa2AUeK9apiFcHlsQt8sUlDi7yDivZXJ1cdgNr3sJNzQAFqGbUuJf5fnO5k6UMr0HYNQP0uYeHEVbm9Sso3etfxe18iUzK6CecV/s640/Screen+Shot+2012-11-13+at+23.10.44+PM.png&quot; title=&quot;Titanium-Sdk-2-1-4&quot; width=&quot;483&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;Detail of Titanium SDK 2.1.4&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;จากนั้นก็ทำการกดที่ปุ่ม Install Update &amp;nbsp;เพื่อทำการ Update Titanium SDK 2.1.4 ครับ&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/1738392454183330775/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2012/11/update-titanium-sdk-214.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/1738392454183330775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/1738392454183330775'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2012/11/update-titanium-sdk-214.html' title='Update - Titanium SDK 2.1.4'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjcQ_a4bi2eRsjfWosrs_IWE1_PNYrQC_xsa7TzzG4FTB5Y_M088gAlItUrW-enRPe3eM1kG1o1f8S9lodlIIq83BZ0ld4Q-RSL-1kqCSsQoCAzGpthtGNweVZ08RhNi9XYs-Bmiy0k7tX/s72-c/banner-sdk.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-5421713176619306741</id><published>2012-11-08T21:54:00.000+07:00</published><updated>2013-02-13T13:11:38.908+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HTTPClient"/><category scheme="http://www.blogger.com/atom/ns#" term="RESFul"/><category scheme="http://www.blogger.com/atom/ns#" term="SOAP"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Studio"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium.Network.createHTTPClient"/><title type='text'>ดึงข้อมูลจากแหล่งต่าง ๆ ด้วย Titanium.Network.HTTPClient</title><content type='html'>เนื่องจากในปัจจุบันนั้นการดึงข้อมูลจาก Provider ต่าง ๆ นั้นเป็นสิ่งที่จำเป็นเนื่องจากหากเราต้องจัดเกบข้อมูลเองทั้งหมดคงไม่เป็นเรื่องที่ดีอย่างแน่นอน จึงทำให้เกิด Service ในรูปแบบต่าง ๆ เช่น&amp;nbsp;RESTful และ SOAP ซึ่งทั้ง 2 อย่างนี้จะเป็นมาตรฐานการรับส่งข้อมูลในรูปแบบของ Web Service ที่ปัจจุบันมีใช้กันอย่างแพร่หลาย และการที่เราต้องการข้อมูลประเภทนี้ ทาง Appceletor ผู้พัฒนา Titanium Studio ได้สร้าง API ตามมาตรฐานของ&amp;nbsp;&lt;a href=&quot;http://www.w3.org/TR/XMLHttpRequest/&quot; target=&quot;_blank&quot;&gt;XMLHttpRequest&lt;/a&gt;&amp;nbsp;และ API ที่เราจะทำการเรียกใช้นั่นก็คือ&lt;br /&gt;
&lt;br /&gt;
Titanium.Network.HTTPClient&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHgpStzx17-sgd3WARni9ZvYyg7Ad79U3zKwbkjlSslsIAs8NTBHktYI-nrSJCQeOcsTEvuiuEA6JsMSb0xi5Jr-waaaVAbFvYyzVVr6UIz-FAjAYirqebht76YbJPVZuPPDuYBRFispZn/s1600/http_client_icon.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHgpStzx17-sgd3WARni9ZvYyg7Ad79U3zKwbkjlSslsIAs8NTBHktYI-nrSJCQeOcsTEvuiuEA6JsMSb0xi5Jr-waaaVAbFvYyzVVr6UIz-FAjAYirqebht76YbJPVZuPPDuYBRFispZn/s1600/http_client_icon.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;โดยเจ้า&amp;nbsp;Titanium.Network.HTTPClient จะมีวิธีการใช้งานอย่างไรนั้นเรามาติดตามกันครับ&lt;br /&gt;
&lt;br /&gt;
ก่อนอื่นเราดูโครงสร้างของมันกันก่อนครับ&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;var url = &quot;http://www.mobidevthai.com&quot;;&lt;br /&gt;
var xhr = Ti.Network.createHTTPClient({&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;onload: function(e) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ti.API.debug(this.responseText);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;alert(&#39;success&#39;);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;},&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;onerror: function(e) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ti.API.debug(e.error);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;alert(&#39;error&#39;);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;},&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;timeout:5000&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
xhr.open(&quot;GET&quot;, url);&lt;br /&gt;
xhr.send();&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
ทีนี้เรามาลงในรายละเอียดกันครับ&lt;br /&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li&gt;onload เป็น Function ที่จะถูกเรียกเมื่อมีการตอบสนองจาก URL ปลายทาง ซึ่งจะมีการตอบสนอง 3 แบบคือ&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;this.responseText จะเป็นการรับค่าที่เป็นลักษณะของ JSON หรือ ข้อมูลที่เป็นลักษณะของ Text ธรรมดา ๆ&amp;nbsp;&lt;/li&gt;
&lt;li&gt;this.responseXML จะเป็นการรับค่าในรูปแบบของ XML ตามมาตรฐานของ SOAP และ XML WebService ต่าง ๆ&amp;nbsp;&lt;/li&gt;
&lt;li&gt;this.responseData จะเป็นการรับค่าในรูปแบบของ binary&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;onerror เป็น Function ที่จะถูกเรียกเมื่อมีความผิดพลาดจาก URL ปลายทาง ซึ่งจะมีการตอบสนองต่าง ๆ ดังนี้&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;this.responseText จะมีลักษณะเมื่อกับ onload ที่จะเป็นการรับค่าในรูปแบบ Text แต่จะเป็นการในลักษณะของ error message ต่าง ๆ&amp;nbsp;&lt;/li&gt;
&lt;li&gt;this.status จะเป็นการรับค่าของ status code ต่าง ๆ&amp;nbsp;&lt;/li&gt;
&lt;li&gt;e.error เป็นการรับข้อมูลกลับมาในลักษณะของ Event Object&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
และอีก Property อีก หนึ่งอันก็คือ timeout จะเป็นส่วนสำหรับกำหนดช่วงระบะเวลาให้กับ HTTPClient นี้ โดยจะมีหน่วยเป็น milliseconds&lt;br /&gt;
&lt;br /&gt;
ในส่วนของ Method ที่ใช้สำหรับการเปิด Connection ของ HTTPClient นี้ก็คือ open ตรงนี้สามารถระบุ method ของ Request ของ HTTPClient นี้ได้ ว่าจะเป็น &quot;GET&quot; หรือ &quot;POST&quot;&lt;br /&gt;
&lt;br /&gt;
เมื่อทำการเปิด Connection แล้วก็ทำการ send() เพื่อส่ง Request นั้น ๆ ไปยัง Server ครับ&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/5421713176619306741/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2012/11/Titanium-Network-HTTPClient-RESTFull-Soap.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/5421713176619306741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/5421713176619306741'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2012/11/Titanium-Network-HTTPClient-RESTFull-Soap.html' title='ดึงข้อมูลจากแหล่งต่าง ๆ ด้วย Titanium.Network.HTTPClient'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHgpStzx17-sgd3WARni9ZvYyg7Ad79U3zKwbkjlSslsIAs8NTBHktYI-nrSJCQeOcsTEvuiuEA6JsMSb0xi5Jr-waaaVAbFvYyzVVr6UIz-FAjAYirqebht76YbJPVZuPPDuYBRFispZn/s72-c/http_client_icon.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-6081518849475614734</id><published>2012-11-02T22:08:00.002+07:00</published><updated>2012-11-02T22:08:42.510+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JSON"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Studio"/><title type='text'>การใช้งาน JSON กับ Titanium Mobile </title><content type='html'>หลังจากที่เราได้รู้จักกับ JSON ไปแล้วในบทความ&lt;a href=&quot;http://www.mobidevthai.com/2012/10/what-is-json-titanium-mobile.html&quot; target=&quot;_blank&quot;&gt; JSON คืออะไร&lt;/a&gt;&amp;nbsp;มาถึงบทความนี้ก็จะกล่าวถึงวิธีการนำ JSON มาใช้ใน Titanium Mobile ครับ&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2dKMtvN_sbzDX6laG3ge3o_RrLJkxL3V_hZluUZxY1DdRHmi9_2baTuHVHw5UvtEkevzae2KhxRYjnA2__5hRG0SzFBTaf9EzleFF_uu4xfiehfWL5ne1WpYkZvYUjbd2ZAjhJnIf5_rt/s1600/json.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2dKMtvN_sbzDX6laG3ge3o_RrLJkxL3V_hZluUZxY1DdRHmi9_2baTuHVHw5UvtEkevzae2KhxRYjnA2__5hRG0SzFBTaf9EzleFF_uu4xfiehfWL5ne1WpYkZvYUjbd2ZAjhJnIf5_rt/s1600/json.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;เนื่องจากพื้นฐานของ&amp;nbsp;&amp;nbsp;Titanium Mobile นั้นเป็น Javascript และ JSON เองก็ ถูกพัฒนามาจาก Javascript ดังนั้นมันจึงไปด้วยกันได้อย่างลงตัวครับ เรามาเริ่มกันเลยครับ&lt;br /&gt;
&lt;br /&gt;
JSON นั้นโดยพื้นฐายของมันจะอยู่ในรูปแบบ ของ Array ดังเช่น&lt;br /&gt;
&lt;code&gt;[&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&quot;firstname&quot;:&quot;Pop&quot;,&quot;lastname&quot;:&quot;Cat&quot;}, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&quot;firstname&quot;:&quot;Tora&quot;, &quot;lastname&quot;:&quot;Taro&quot;} &lt;br /&gt;
]&lt;/code&gt;&lt;br /&gt;
ดังนั้นการนำเอา JSON มาใช้กับ Titanium นั้นก็เพียงแค่นำ ตัวแปรมารับค่าที่เป็น JSON นี้ได้ทันที ดังตัวอย่างเช่น&lt;br /&gt;
&lt;code&gt;var json = [&lt;br /&gt;
{&quot;firstname&quot;:&quot;Pop&quot;,&quot;lastname&quot;:&quot;Cat&quot;}, &lt;br /&gt;
{&quot;firstname&quot;:&quot;Tora&quot;, &quot;lastname&quot;:&quot;Taro&quot;}&lt;br /&gt;
];&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
จากนั้นหากต้องการใช้ค่าใด ๆ ใน Object ก็สามารถที่จะเรียกใช้งานได้โดยตรงคือ&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;json[0].firstname&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
และหากใน JSON นั้น ๆ มีข้อมูลหลาย ๆ ค่า ก็​สามารถที่จะนำมา Loop เพื่อนำเอาข้อมูลออกมาได้เช่น&lt;br /&gt;
&lt;code&gt;for(var j in json)&lt;br /&gt;
{&lt;br /&gt;
alert(json[j].firstname);&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
เป็นอย่างไรกันบ้างครับ บทความนี้เกี่ยวกับการใช้งาน JSON กับ Titanium Mobile ในบทความต่อ ๆ ไปผมจะขอกล่าวถึงการดึงข้อมูล JSON จาก WebSite ต่าง ๆ ซึ่งจะต้องรู้จักกับ Object อีกขนิดหนึ่ง ซึ่งก็คือ HTTPClient นั่นเองครับ</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/6081518849475614734/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2012/11/json-titanium-mobile.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/6081518849475614734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/6081518849475614734'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2012/11/json-titanium-mobile.html' title='การใช้งาน JSON กับ Titanium Mobile '/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2dKMtvN_sbzDX6laG3ge3o_RrLJkxL3V_hZluUZxY1DdRHmi9_2baTuHVHw5UvtEkevzae2KhxRYjnA2__5hRG0SzFBTaf9EzleFF_uu4xfiehfWL5ne1WpYkZvYUjbd2ZAjhJnIf5_rt/s72-c/json.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-4967243359218495219</id><published>2012-10-25T23:00:00.003+07:00</published><updated>2012-10-25T23:00:54.044+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JSON"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Studio"/><title type='text'>JSON คืออะไร ??</title><content type='html'>&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;JSON ย่อมาจาก คำว่า JavaScript Object Notation เป็นฟอร์แมตสำหรับแลกเปลี่ยนข้อมูลคอมพิวเตอร์ ฟอร์แมต JSON นั้นอยู่ในรูปข้อความธรรมดา (plain text) ที่ทั้งมนุษย์และโปรแกรมคอมพิวเตอร์สามารถอ่านเข้าใจได้&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2dKMtvN_sbzDX6laG3ge3o_RrLJkxL3V_hZluUZxY1DdRHmi9_2baTuHVHw5UvtEkevzae2KhxRYjnA2__5hRG0SzFBTaf9EzleFF_uu4xfiehfWL5ne1WpYkZvYUjbd2ZAjhJnIf5_rt/s1600/json.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;123&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2dKMtvN_sbzDX6laG3ge3o_RrLJkxL3V_hZluUZxY1DdRHmi9_2baTuHVHw5UvtEkevzae2KhxRYjnA2__5hRG0SzFBTaf9EzleFF_uu4xfiehfWL5ne1WpYkZvYUjbd2ZAjhJnIf5_rt/s200/json.gif&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; line-height: 19.200000762939453px; text-indent: 32px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; line-height: 19.200000762939453px; text-indent: 32px;&quot;&gt;มาตรฐานของฟอร์แมต JSON คือ&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; line-height: 19.200000762939453px; text-indent: 32px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://tools.ietf.org/html/rfc4627&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot; target=&quot;_blank&quot;&gt;RFC 4627&lt;/a&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; line-height: 19.200000762939453px; text-indent: 32px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; line-height: 19.200000762939453px; text-indent: 32px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;มี Internet media type เป็น application/json และมีนามสกุลของไฟล์เป็น .json&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;โครงสร้างของ JSON&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;J&lt;span style=&quot;background-color: white; text-indent: 2.5em;&quot;&gt;&lt;span style=&quot;line-height: 19.200000762939453px;&quot;&gt;SON นั้นใช้ลักษณะภาษาของ&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Javascript&quot; target=&quot;_blank&quot;&gt;Javascript&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; text-indent: 2.5em;&quot;&gt;&lt;span style=&quot;line-height: 19.200000762939453px;&quot;&gt;&amp;nbsp;แต่ไม่ถูกมองว่าเป็นภาษาโปรแกรม กลับถูกมองว่าเป็นภาษาในการแลกเปลี่ยนข้อมูลมากกว่า ในปัจจุบันมีไลบรารีของภาษาโปรแกรมอื่นๆ ที่ใช้ประมวลผลข้อมูลในรูปแบบ JSON มากมาย&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; line-height: 19.200000762939453px; text-indent: 2.5em;&quot;&gt;ตัวอย่างของ JSON&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;code&gt;[&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&quot;firstname&quot;:&quot;Pop&quot;,&quot;lastname&quot;:&quot;Cat&quot;}, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&quot;firstname&quot;:&quot;Tora&quot;, &quot;lastname&quot;:&quot;Taro&quot;} &lt;br /&gt;
]&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt; &lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;JSON นั้นยังสามารถจัดเก็บข้อมูลที่เป็น ลักษณะของ Master - Detail ได้อีกด้วย ตัวอย่างการจัดเก็บข้อมูล&lt;/span&gt;&lt;br /&gt;
&lt;code&gt;[&lt;br /&gt;
&amp;nbsp;{&quot;firstname&quot; : &quot;Pop&quot;, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&quot;lastname&quot;: &quot;Cat&quot;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&quot;address&quot; : [ &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;address1&quot; : &quot;home&quot;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;province&quot; : &quot;bangkok&quot;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;country&quot; : &quot;Thailand&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
]&lt;/code&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt; &lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;จะเห็นได้ว่ารูปแบบการจัดเก็บนั้นสามารถอ่านได้อย่างง่ายดาย และยังสามารถเข้าใจได้ง่ายด้วย&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
 &lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;เอาหล่ะครับวันนี้ขอเกริ่มสั้น ๆ เพียงเท่านี้ก่อน ในบทความหน้านั้นเราจะนำ JSON มาจากไหน และนำ JSON ที่ได้นี้มาทำอย่างไรใน &amp;nbsp;Titanium Mobile ติดตามกันต่อนะครับ&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/4967243359218495219/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2012/10/what-is-json-titanium-mobile.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/4967243359218495219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/4967243359218495219'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2012/10/what-is-json-titanium-mobile.html' title='JSON คืออะไร ??'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2dKMtvN_sbzDX6laG3ge3o_RrLJkxL3V_hZluUZxY1DdRHmi9_2baTuHVHw5UvtEkevzae2KhxRYjnA2__5hRG0SzFBTaf9EzleFF_uu4xfiehfWL5ne1WpYkZvYUjbd2ZAjhJnIf5_rt/s72-c/json.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-4060157812257478052</id><published>2012-10-21T21:10:00.001+07:00</published><updated>2013-02-13T13:10:41.561+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="and"/><category scheme="http://www.blogger.com/atom/ns#" term="ios"/><category scheme="http://www.blogger.com/atom/ns#" term="Local Database"/><category scheme="http://www.blogger.com/atom/ns#" term="Local Storage"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile Database"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile Developer"/><category scheme="http://www.blogger.com/atom/ns#" term="SQLite"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Studio"/><title type='text'>SQLite กับ Titanium Mobile</title><content type='html'>&lt;a href=&quot;http://www.sqlite.org/&quot; target=&quot;_blank&quot;&gt;SQLite &lt;/a&gt;เป็น Database ขนาดเล็กที่ได้รับความนิยมสำหรับ Application ที่ทำงานบน Smart Phone ทั้ง &lt;a href=&quot;http://en.wikipedia.org/wiki/IOS&quot; target=&quot;_blank&quot;&gt;iOS&lt;/a&gt; และ &lt;a href=&quot;http://en.wikipedia.org/wiki/Android_(operating_system)&quot; target=&quot;_blank&quot;&gt;Android&lt;/a&gt; ซึ่งมีรูปแบบการทำงานแบบ Standalone คือ ทำงานอยู่ใน Application นั้น ๆ โดย &lt;a href=&quot;http://www.sqlite.org/&quot; target=&quot;_blank&quot;&gt;SQLite&lt;/a&gt;&amp;nbsp;นั้นมีโครงสร้างที่ง่ายต่อการจัดเก็บและมีขนาดเล็กมาก จึงเหมาะกับการทำงานบน Smart Phone เป็นอย่างยิ่ง&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuT_U9Fain1PHX_zG_9chzxePGlv-xPZW2zs4CCb1ufSfPL82uMkCH5zmNhK_4jA8v2gtyr0rc9e3lvpuYXEqHoLveQRpawiP8wZUHYdWwBiFWgzmr2p7ngs0NZtkSGkLjXzrgwDFPJ6OJ/s1600/ti-sqlite.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuT_U9Fain1PHX_zG_9chzxePGlv-xPZW2zs4CCb1ufSfPL82uMkCH5zmNhK_4jA8v2gtyr0rc9e3lvpuYXEqHoLveQRpawiP8wZUHYdWwBiFWgzmr2p7ngs0NZtkSGkLjXzrgwDFPJ6OJ/s1600/ti-sqlite.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
หลังจากที่เราทำความรู้จักกับ &lt;a href=&quot;http://www.sqlite.org/&quot; target=&quot;_blank&quot;&gt;SQLite&lt;/a&gt; กันไปแล้ว คราวนี้เราก็จะมาดูกันว่า &lt;a href=&quot;http://www.appcelerator.com/&quot; target=&quot;_blank&quot;&gt;Titanium&lt;/a&gt; นั้นรองรับการทำงานกับ &lt;a href=&quot;http://www.sqlite.org/&quot; target=&quot;_blank&quot;&gt;SQLite&lt;/a&gt; อย่างไร&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://www.appcelerator.com/&quot; target=&quot;_blank&quot;&gt;Titanium Studio&lt;/a&gt; นั้นรองรับการทำงาน &lt;a href=&quot;http://www.sqlite.org/&quot; target=&quot;_blank&quot;&gt;SQLite&lt;/a&gt; ผ่านทาง Module ที่มีชื่อว่า Titanium.Database &amp;nbsp;โดย Titanium.Database นั้น รองรับทั้งการทำงานบน iOS และ Android สำหรับในบทความนี้จะแสดงให้เห็นถึงวิธีการใช้งาน SQLite ร่วมกับ Titanium Studio โดยที่สามารถที่จะ สร้างตาราง , บันทึกข้อมูล ,​ แก้ไขข้อมูล และ การลบข้อมูล เรามาเริ่มกันเลยครับ&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
&lt;b&gt;&lt;i&gt;&lt;u&gt;สร้าง Database (Create Database)&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
ก่อนการทำงานใด ๆ กับ &lt;a href=&quot;http://www.sqlite.org/&quot; target=&quot;_blank&quot;&gt;SQLite&lt;/a&gt; นี้สิ่งที่เราต้องดำเนินการก่อนก็คือการ Install Database Engine ลงใน Application ของเราครับซึ่งเราสามารถทำได้โดยใช้คำสั่ง&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;code&gt;Titanium.Database.install([filepath],[databasename]&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
เช่น หากเราต้องการสร้าง Database ชื่อว่า &#39;mobidevthai&#39; โดยนำไปวางไว้ใน Path ของ Application Data Directory (ใช้คำสั่ง&amp;nbsp;Titanium.Filesystem.applicationDataDirectory เพื่อนำเอา Application Data Directory ของเครื่องเรามาได้เลยครับ) โดยใช้คำสั่งแบบนี้ครับ&amp;nbsp;&lt;/div&gt;
&lt;code&gt;Titanium.Database.install(Titanium.Filesystem.applicationDataDirectory + &#39;mobidevthai.db&#39;,&#39;mobidevthai&#39;);&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
จากคำสั่งข้างต้นนั้นเราจะได้ Database ที่มีชื่อว่า &lt;a href=&quot;http://www.mobidevthai.com/&quot; target=&quot;_blank&quot;&gt;mobidevthai&lt;/a&gt; ขึ้นมาแล้วครับ&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
&lt;b&gt;&lt;i&gt;&lt;u&gt;สร้าง Table (Create Table)&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;div class=&quot;p1&quot;&gt;
หลังจากที่เราได้ Database แล้วเราก็จะมาทำการ สร้าง Table กันนะครับ ก่อนทำการสร้าง Table นั้นเราต้องทำการเปิด Database ของเราขึ้นมาก่อนครับ โดยใช้คำสั่ง แบบนี้&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;/div&gt;
&lt;code&gt;var db = Titanium.Database.open(&#39;mobidevthai&#39;);&lt;/code&gt;&lt;br /&gt;
โดยตัวแปรชื่อ db นั้นจะเป็นตัวเก็บ Connection เอาไว้ เมื่อเราทำการเปิด Database ขึ้นมาได้แล้วเราก็จะมาทำการสร้าง &amp;nbsp;Table กันครับ โดยการสร้าง Table นั้นก็จะใช้คำส่ง SQL Command ทั่ว ๆ ไปนั่นเองครับ&lt;br /&gt;
&lt;code&gt;var sql = &#39;create table table1 ( id int, name varchar(20) )&#39;;&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
จากนั้นก็ทำการ Execute sql ที่เราเตรียมเอาไว้ครับ โดยใช้คำสั่ง&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;/div&gt;
&lt;code&gt;db.execute(sql);&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
เพียงเท่านี้เราก็จะได้ Table ที่อยู่ใน Database แล้วหล่ะครับ&amp;nbsp;จากนั้นก็ทำการ ปิด Connection ครับ โดยคำสั่ง&amp;nbsp;&lt;/div&gt;
&lt;code&gt;db.close();&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;b&gt;&lt;i&gt;&lt;u&gt;บันทึกข้อมูล (Insert Data), แก้ไขข้อมูล (Update Data) และ ลบข้อมูล (Delete)&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
การบันทึกข้อมูลลงใน SQLite นั้นก็สามารถทำได้อย่างง่ายดายครับ โดยเริ่มจากการ เปิด Database เหมือนกับการ สร้าง Table ครับ&amp;nbsp;&lt;/div&gt;
&lt;code&gt;var db = Titanium.Database.open(&#39;mobidevthai&#39;)&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
จากนั้นก็ทำการกำหนด SQL Command เพื่อทำการ Insert ข้อมูล&amp;nbsp;&lt;/div&gt;
&lt;code&gt;var sql = &#39;insert into table1 values(1,\&#39;Mobidevthai.com\&#39;);&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
จากนั้นก็ทำการ Execute &amp;nbsp;sql&amp;nbsp;&lt;/div&gt;
&lt;code&gt;db.execute(sql);&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
ส่วนการ Update และ Delete นั้นก็ใช้วิธีเดียวกันกับการ Insert ข้อมูลนั่นก็คือการสร้าง SQL Command ตามการทำงานนั้นเอง&amp;nbsp;&lt;/div&gt;
&lt;code&gt;//การ Update ข้อมูล&lt;br /&gt;
var sql = &#39;update table1 set name = \&#39;www.mobidevthai.com\&#39;) where id = 1&#39;;&lt;br /&gt;
//การ Delete &amp;nbsp;ข้อมูล&lt;br /&gt;
var sql = &#39;delete table1 where id = 1&#39;;&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
จากนั้นก็ทำการ ปิด Connection ครับ โดยคำสั่ง&amp;nbsp;&lt;/div&gt;
&lt;code&gt;db.close();&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
&lt;b&gt;&lt;i&gt;&lt;u&gt;ดึงข้อมูล (Select)&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;div class=&quot;p1&quot;&gt;
เมื่อมีการบันทึกข้อมูลก็ต้องมีการนำข้อมูลขึ้นมาเพื่อแสดง หรือเพื่อตรวจสอบ ครับ ซึ่งวิธีการนั้นก็จะคล้ายกันกับการ บันทึกข้อมูล แก้ไขข้อมูลและ ลบข้อมูลครับ แต่จะมีวิธีการที่แตกต่างอย่างไรบ้างไปดูกันครับ&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
เริ่มแรกก็จะเหมือนกับการบันทึกข้อมูล นั่นก็คือการเปิด Database ครับ&amp;nbsp;&lt;/div&gt;
&lt;code&gt;var db = Titanium.Database.open(&#39;mobidevthai&#39;);&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
จากนั้นก็กำหนด SQL Command เพื่อทำการ &amp;nbsp;Select ข้อมูล ครับ&lt;/div&gt;
&lt;code&gt;var sql &amp;nbsp;= &#39;select id,name from table1&#39;;&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
จากนั้นก็ทำการ Execute ครับ สิ่งที่แตกต่างจากการ Insert , Update &amp;nbsp;และ Delete &amp;nbsp;นั้นก็คือ เราต้องนำเอาตัวแปรมารองรับ Result ที่เกิดจากการ Execute นี้ครับ โดยเราสามารถนำเอาตัวแปรมารองรับได้แบบนี้ครับ&lt;/div&gt;
&lt;code&gt;var row = db.execute(sql);&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
โดยตัวแปร row นี้จะอยู่ในรูปแบบ Class ที่มีชื่อว่า&amp;nbsp;ResultSet ครับ โดยเจ้า&amp;nbsp;ResultSet จะมี &amp;nbsp;Property ต่าง ๆ ดังนี้ครับ&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;fieldCount&amp;nbsp;เอาไว้ตรวจสอบจำนวนของ Field ที่ถูก Selete ขึ้นมา&lt;/li&gt;
&lt;li&gt;rowCount&amp;nbsp;เอาไว้ตรวจสอบจำนวน Row ที่ถูก Select ขึ้นมา&lt;/li&gt;
&lt;li&gt;validRow&amp;nbsp;เอาตรวจสอบว่า Row ปัจจุบันนั้นเป็น &lt;a href=&quot;http://en.wikipedia.org/wiki/End-of-file&quot; target=&quot;_blank&quot;&gt;EOF&lt;/a&gt; หรือไม่&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
หลังจากที่เราได้รู้จักกับ Class ResultSet ไปแล้ว ก็มาต่อกันเลยดีกว่าหลังจากที่ทำการ &amp;nbsp;execute ไปแล้วเราก็ต้องมาทำการตรวจสอบ ความถูกต้องของ row ก่อนจากน้นก็ทำการนำข้อมูลที่ได้ใส่ลงไปใน Array เพื่อนำข้อมูลที่ได้ไปใช้งานต่อครับ อย่าลืมปิด &amp;nbsp;row ด้วยนะครับ ไม่อย่างนั้น memory เต็มแน่ ๆ ครับ&lt;/div&gt;
&lt;code&gt;var data = [];&lt;br /&gt;
while(row.isValidRow())&lt;br /&gt;
{&lt;br /&gt;
data.push({id : rows.field(0),name : rows.field(1)});&lt;br /&gt;
row.next();&lt;br /&gt;
}&lt;br /&gt;
row.close();&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
จากนั้นก็ทำการ ปิด Connection ครับ โดยคำสั่ง&amp;nbsp;&lt;/div&gt;
&lt;code&gt;db.close();&lt;/code&gt;&lt;/div&gt;
&lt;br /&gt;
เป็นอย่างไรกันบ้างครับกับการทำงานกับ Database &lt;a href=&quot;http://www.sqlite.org/&quot; target=&quot;_blank&quot;&gt;SQLite&lt;/a&gt; นี้ ในบทความต่อ ๆ ไปนั้น จะเป็นเรื่องราวส่วนไหนของ Titanium Studio ติดตามกันต่อนะครับ</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/4060157812257478052/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2012/10/sqlite-titanium-mobile-ios-android.html#comment-form' title='1 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/4060157812257478052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/4060157812257478052'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2012/10/sqlite-titanium-mobile-ios-android.html' title='SQLite กับ Titanium Mobile'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuT_U9Fain1PHX_zG_9chzxePGlv-xPZW2zs4CCb1ufSfPL82uMkCH5zmNhK_4jA8v2gtyr0rc9e3lvpuYXEqHoLveQRpawiP8wZUHYdWwBiFWgzmr2p7ngs0NZtkSGkLjXzrgwDFPJ6OJ/s72-c/ti-sqlite.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-6593077752270252837</id><published>2012-10-20T02:00:00.000+07:00</published><updated>2012-10-30T17:36:22.114+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Dashboard Item"/><category scheme="http://www.blogger.com/atom/ns#" term="Dashboard View"/><category scheme="http://www.blogger.com/atom/ns#" term="ios"/><category scheme="http://www.blogger.com/atom/ns#" term="ipad"/><category scheme="http://www.blogger.com/atom/ns#" term="iphone"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile Developer"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Studio"/><category scheme="http://www.blogger.com/atom/ns#" term="View"/><title type='text'>การใช้งาน Dashboard View (iOS)</title><content type='html'>ในบทความนี้ผมจะกล่าวถึง View อีกชนิดหนึ่งที่ใช้ได้เฉพาะใน iOS เท่านั้น สามารถเพิ่ม ลบ หรือ เคลื่อนย้าย Icon ที่อยู่บน View ได้โดยเราเรียก View ประเภทนี้ว่า Dashboard View ครับ&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb30Xl2QT35C6PKtCkHvM1TkAm16SYMzu7oYRR8e0TByohSTkKEqXNkHY4FBOiSD_yrwDYcuZHN8OJfUx0ALSFQP1xr7NgdLoWcrh_fJhxg-Us8-8wV4aQr8apjrOo92vKugMq6U3dfDSN/s1600/dashboard.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;297&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb30Xl2QT35C6PKtCkHvM1TkAm16SYMzu7oYRR8e0TByohSTkKEqXNkHY4FBOiSD_yrwDYcuZHN8OJfUx0ALSFQP1xr7NgdLoWcrh_fJhxg-Us8-8wV4aQr8apjrOo92vKugMq6U3dfDSN/s400/dashboard.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
เจ้า&amp;nbsp;Dashboard View นี้หากนึกภาพไม่ออก ก็หน้า Home ของ iOS นั่นแหละครับ ที่เป็นรูปแบบของ Dashboard View นี้ เอาหล่ะครับเรามาเริ่มกันเลย ก่อนอื่นเลยเราต้องสร้าง ตัวแปรที่เป็น Array ขึ้นมาก่อนครับ เพื่อเก็บเอา Item ของเราเอาไว้&lt;br /&gt;
&lt;code&gt;var dashboarditem = [];&lt;/code&gt;&lt;br /&gt;
จากนั้นก็ทำการสร้าง Item ขึ้นมาครับอันนี้ผมสร้าง 10 Item นะครับ แล้วนำทั้งหมดไปใส่ ใน Array ที่ได้สร้างเอาไว้ โดยคำสั่ง&lt;br /&gt;
&lt;code&gt;for (var i=0; i &amp;lt; 10; i++) {&lt;br /&gt;
var dbItem = Ti.UI.createDashboardItem();&lt;br /&gt;
var container = Ti.UI.createView({&lt;br /&gt;
width: 106,&lt;br /&gt;
height:106&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var image = Titanium.UI.createImageView({&lt;br /&gt;
image : &#39;KS_nav_ui.png&#39;,&lt;br /&gt;
top: 0&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var label = Titanium.UI.createLabel({&lt;br /&gt;
text : &#39;item &#39; + i,&lt;br /&gt;
botton : 0&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
container.add(image);&lt;br /&gt;
container.add(label);&lt;br /&gt;
&lt;br /&gt;
dbItem.add(container);&lt;br /&gt;
dashboarditem.push(dbItem);&lt;br /&gt;
};&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
การสร้าง Dashboard Item หากต้องการให้ทำการแสดง ข้อความด้วยจะต้องสร้าโดยการสร้าง View ขึ้นมาเพื่อรองรับ ทั้ง Icon และ Label ครับ เนื่องจาก API ของ Apple ไม่รองรับโดยตรงครับ จากนั้นก็ทำการสร้าง Dashboard View พร้อมทั้งนำ Array มาแสดงใน Item ด้วยคำสั่ง&lt;br /&gt;
&lt;code&gt;var dashboard = Titanium.UI.createDashboardView({ data : dashboarditem });&lt;/code&gt;&lt;br /&gt;
เมื่อเราสร้างเสร็จแล้วก็ทดลองรันดูครับ (อย่าลืมเอา dashboard view ใส่ &amp;nbsp;window นะครับ)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb30Xl2QT35C6PKtCkHvM1TkAm16SYMzu7oYRR8e0TByohSTkKEqXNkHY4FBOiSD_yrwDYcuZHN8OJfUx0ALSFQP1xr7NgdLoWcrh_fJhxg-Us8-8wV4aQr8apjrOo92vKugMq6U3dfDSN/s1600/dashboard.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;295&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb30Xl2QT35C6PKtCkHvM1TkAm16SYMzu7oYRR8e0TByohSTkKEqXNkHY4FBOiSD_yrwDYcuZHN8OJfUx0ALSFQP1xr7NgdLoWcrh_fJhxg-Us8-8wV4aQr8apjrOo92vKugMq6U3dfDSN/s400/dashboard.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
เพียงเท่านี้เราก็จะได้ Dashboard View มาใช้แล้วหล่ะครับ&lt;br /&gt;
&lt;br /&gt;
กรณีหากต้องการให้มีการขยับของ Icon สามารถทำได้โดยทำการเพิ่ม Property ไปที่ &amp;nbsp;Dashboard View แบบนี้ครับ&lt;br /&gt;
&lt;code&gt;var dashboard = Ti.UI.createDashboardView({&lt;br /&gt;
data : dashboarditem,&lt;br /&gt;
editable : true,&lt;br /&gt;
wobble : true&lt;br /&gt;
});&lt;/code&gt;&lt;br /&gt;
โดย Property editable นั้นสำหรับเปิดให้สามารถทำการ edit ได้ ส่วน wobble นั้นเอาไว้สำหรับทำให้ icon ขยับไปมาเพื่อบอกว่าอยู่ใน Mode Edit ครับ ส่วนวิธีการ Edit ก็ แค่กด icon ค้างไว้ครับก็สามารถที่จะลบ หรือ ขยับ icon ไปมา ได้แล้วหล่ะครับ&lt;br /&gt;
&lt;br /&gt;
เป็นอย่างไรกันบ้างครับกับ Dashboard View ไม่ยากเลยใช่มั้ยครับ ส่วนในบทความหน้านั้นจะเป็นเรื่องราวเกี่ยวกับอะไรนั้น ติดตามกันต่อในบทความหน้านะครับ</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/6593077752270252837/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2012/10/dashboard-view-ios-titanium-mobile.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/6593077752270252837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/6593077752270252837'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2012/10/dashboard-view-ios-titanium-mobile.html' title='การใช้งาน Dashboard View (iOS)'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb30Xl2QT35C6PKtCkHvM1TkAm16SYMzu7oYRR8e0TByohSTkKEqXNkHY4FBOiSD_yrwDYcuZHN8OJfUx0ALSFQP1xr7NgdLoWcrh_fJhxg-Us8-8wV4aQr8apjrOo92vKugMq6U3dfDSN/s72-c/dashboard.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-702136001198517450</id><published>2012-10-16T23:29:00.001+07:00</published><updated>2012-10-17T15:42:32.834+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="Event"/><category scheme="http://www.blogger.com/atom/ns#" term="ios"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile Developer"/><category scheme="http://www.blogger.com/atom/ns#" term="Multitasking"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Studio"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium.App"/><title type='text'>การใช้งาน Event ของ Titanium.App</title><content type='html'>จากที่ได้เคยกล่าวถึง Titanium.App ใน &lt;a href=&quot;http://www.mobidevthai.com/2012/10/titanium-app-using.html&quot; target=&quot;_blank&quot;&gt;รู้จักกับ Titanium.App&lt;/a&gt;&amp;nbsp;ตอนท้ายของบทความผมได้กล่าวเอาไว้ถึงการใช้งาน Event ของ Titanium.App เอาไว้ในบทความนี้เราไปดูกันครับว่า มันใช้งานอย่างไร&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd-2NlzxjvwV8MwMt69877snO9-J-kJM4t6pJTTHX1iCc0pXD5uYeViJgR4h20U2Sn-ylN2HHntIOCZmNo6uFTP5wJbbTJz69kciGvV6OpOKNP-Fc63zIAU1JxtXhvkuxZkGwh-4ntZ4G8/s1600/tistudio_devices.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd-2NlzxjvwV8MwMt69877snO9-J-kJM4t6pJTTHX1iCc0pXD5uYeViJgR4h20U2Sn-ylN2HHntIOCZmNo6uFTP5wJbbTJz69kciGvV6OpOKNP-Fc63zIAU1JxtXhvkuxZkGwh-4ntZ4G8/s1600/tistudio_devices.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;อย่างที่เคpกล่าวเอาไว้ในทความ &lt;a href=&quot;http://www.mobidevthai.com/2012/10/titanium-app-using.html&quot; target=&quot;_blank&quot;&gt;รู้จักกับ Titanium.App&lt;/a&gt; นั้น จะมี Event ของ Titanium.App ที่เราใช้ในการทำงานแบบ Multi Tasking ซึ่งนั่นหมายถึงการที่ Application ที่เราใช้งานอยู่มีการ หยุดการใช้งานชั่วคราว อย่างเช่น กำลังเปิด Map อยู่ ก็ มี โทรศัพท์เข้ามา ทำให้ โปรแกรม Map ที่เรากำลังใช้งานอยู่นั้น ไปทำงานอยู่เบื้องหลัง&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
โดยวิธีการทำงานของ Event ของ Titanium.App จะแบ่งได้เป็น 4 ขั้นตอนคือ&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;เมื่อ Application ถูกขัดจังหวะการทำงาน (pause)&lt;/li&gt;
&lt;li&gt;เมื่อ Application หยุดการทำงานของตัวเอง (paused)&lt;/li&gt;
&lt;li&gt;เมื่อ Application ถูกเรียกให้กลับมาทำงานอีกครั้ง (resume)&lt;/li&gt;
&lt;li&gt;เมื่อ Application สามารถทำงานได้อีกครั้ง&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
โดยวิธีการตรวจสอบสถานะการทำงานของ Application เราสามารถตรวจสอบได้โดยการเขียนคำสั่งแบบนี้ครับ&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code&gt;Titanium.App.addEventListener(&#39;pause&#39;,function(){&lt;br /&gt;
Titanium.API.info(&#39;Application Pause&#39;);&lt;br /&gt;
});&lt;br /&gt;
Titanium.App.addEventListener(&#39;paused&#39;,function(){&lt;br /&gt;
Titanium.API.info(&#39;Application Paused&#39;)&lt;br /&gt;
}); &lt;br /&gt;
Titanium.App.addEventListener(&#39;resume&#39;,function(){&lt;br /&gt;
Titanium.API.info(&#39;Application Resume&#39;); &lt;br /&gt;
}); &lt;br /&gt;
Titanium.App.addEventListener(&#39;resumed&#39;,function(){&lt;br /&gt;
Titanium.API.info(&#39;Application Resume&#39;); &lt;br /&gt;
});&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s3&quot;&gt;คำสั่ง Titanium.API.info นั้นเป็นการพิมพ์ข้อความออกมาทาง Console นะครับ&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s3&quot;&gt;โดยตัวอย่างนี้เมื่อนำไปรันและเมื่อทำการกดที่ปุ่ม Home ก็จะได้ ผลลัพท์ แบบนี้ครับ&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s3&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg_XzNF_0_IxZa2RSseUOuR2VeTpWjxGhfUobCbKKZiYzDYfJrRf76RkkqbHjH1WLDDHTXjjcLYRFtGbR7nKeR3PgAg3v-g7sv3WPLUQAXU95qM8VSKypxcWF7xycZ9Gw2vyamDIb2TQao/s1600/Screen+Shot+2012-10-16+at+22.51.29+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;93&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg_XzNF_0_IxZa2RSseUOuR2VeTpWjxGhfUobCbKKZiYzDYfJrRf76RkkqbHjH1WLDDHTXjjcLYRFtGbR7nKeR3PgAg3v-g7sv3WPLUQAXU95qM8VSKypxcWF7xycZ9Gw2vyamDIb2TQao/s400/Screen+Shot+2012-10-16+at+22.51.29+PM.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
และเมื่อกดที่ &amp;nbsp;Application เพื่อเข้าสู่การทำงานอีกครั้งก็จะพบกับข้อความลักษณะแบบนี้ครับ&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp4kDYlT3MSArHur1jFz2V57gp3E1FyHh044oESKIua7LpJq_wWFFAeYMeytycbNaAyGUJwIA8JKrc4JwMw_gnsJhGEV4TnVDi7SybFfGfVmZ-NzdIX4DwAqqaLGZxXSRoUer-wdTecsnf/s1600/Screen+Shot+2012-10-16+at+23.14.39+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;101&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp4kDYlT3MSArHur1jFz2V57gp3E1FyHh044oESKIua7LpJq_wWFFAeYMeytycbNaAyGUJwIA8JKrc4JwMw_gnsJhGEV4TnVDi7SybFfGfVmZ-NzdIX4DwAqqaLGZxXSRoUer-wdTecsnf/s400/Screen+Shot+2012-10-16+at+23.14.39+PM.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
เป็นอย่างไรกันบ้างครับในเรื่องของ Event ของ Titnaium.App สำหรับการ Pause และ Resume ของ Application คิดว่าจะเอาไปทำการประยุกต์ใช้กับ &amp;nbsp;Application ต่าง ๆ ได้อย่างไม่ยากนัก แต่อย่างไรก็ดี การที่ Application ถูก Pause เอาไว้นาน ๆ หากตัว OS นั้นมีการจัดการ Memory ได้อย่างยอดเยี่ยมแล้ว Application นั้น ๆ ก็จะถูกปิดไปโดยอัตโนมัตินะครับ&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/702136001198517450/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2012/10/titanium-app.event-multitasking.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/702136001198517450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/702136001198517450'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2012/10/titanium-app.event-multitasking.html' title='การใช้งาน Event ของ Titanium.App'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd-2NlzxjvwV8MwMt69877snO9-J-kJM4t6pJTTHX1iCc0pXD5uYeViJgR4h20U2Sn-ylN2HHntIOCZmNo6uFTP5wJbbTJz69kciGvV6OpOKNP-Fc63zIAU1JxtXhvkuxZkGwh-4ntZ4G8/s72-c/tistudio_devices.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-7089624412542724605</id><published>2012-10-13T15:11:00.000+07:00</published><updated>2012-10-15T11:54:11.801+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ios"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile Developer"/><category scheme="http://www.blogger.com/atom/ns#" term="Modal"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Studio"/><category scheme="http://www.blogger.com/atom/ns#" term="Transition"/><category scheme="http://www.blogger.com/atom/ns#" term="Window"/><title type='text'>รู้จักกับ Transition (iOS) และ การแสดง Window แบบ Modal</title><content type='html'>ไม่ทราบว่าเคยสังเกตกันบ้างหรือไม่ว่า Application ที่เราได้พัฒนากันขึ้นมา ตอนเปิดหน้า Window แรกทำไมมันแค่แสดงขึ้นมาโดยที่มันไม่มี Effect เลย ไม่ว่าจะพลิกซ้าย พลิกขวา หรือ เปิดขึ้นเหมือนเราเปิดหนังสือ โดยบน Titanium เองมีวิธีการง่าย ๆ มาให้ครับ แต่จะทำอย่างไรกันนั้นเราไปดูกันครับ&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjq-Oujk2HRqGoo47Zcm3iG3Z08ao7_HR-W4NDUpBVGJdWBEsSzWBsfRPiorYzNkUEspJdNMsBrkxEpElB2i5wW6XdfWJIDvsz-lBCyCyxljdiC2GsSm0ZaOE7hHNn1KNTPiBivguQxHH1/s1600/app-transition.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjq-Oujk2HRqGoo47Zcm3iG3Z08ao7_HR-W4NDUpBVGJdWBEsSzWBsfRPiorYzNkUEspJdNMsBrkxEpElB2i5wW6XdfWJIDvsz-lBCyCyxljdiC2GsSm0ZaOE7hHNn1KNTPiBivguQxHH1/s1600/app-transition.jpeg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
โดยปกติแล้วเมื่อเราต้องการให้ Window ที่เราสร้างขึ้นมานั้นทำการแสดงเราก็จะใช้คำสั่ง&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;code&gt;win.open();&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
ซึ่งคำสั่งนี้จะสั่งให้ Window แวดงขึ้นมาแบบธรรมดา ๆ เท่านั้น แต่หากว่าเราต้องการให้ Window ที่เปิดขึ้นมานั้น มี Effect ในการแสดงผลเราจะต้องเพิ่ม Parameter ลงไปหลัง คำสั่ง open แบบนี้ครับ&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;code&gt;win.open({transition:Titanium.UI.iPhone.AnimationStyle.FLIP_FROM_LEFT})&lt;span class=&quot;s1&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
ด้วยคำสั่งข้างต้นจะทำให้ Window ที่เปิดขึ้นมานั้นจะ พลิกหน้าจอจากด้านซ้ายไปด้่านขวา โดยที่ Effect นั้่นเราสามารถกำหนดได้ดังนี้ครับ&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;CURL_DOWN&lt;/li&gt;
&lt;li&gt;CURL_UP&lt;/li&gt;
&lt;li&gt;FLIP_FROM_LEFT&lt;/li&gt;
&lt;li&gt;FLIP_FROM_RIGHT&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
แต่ละแบบเป็นอย่างไรนั้นลองไป ใช้กันได้เลยนะครับ&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
ส่วน การแสดง Window อีกประเภทนั้นก็คือ Window แบบ Modal ครับ โดย ปกติแล้ว การเปิด Window แบบ Modal นี้เมื่อต้องการให้แสดงขึ้นมาเราจะใช้คำสั่ง&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;code&gt;window.open({modal : true});&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
เมื่อใช้คำสั่งนี้จะมี WIndow อีกหน่งอันซ้อนขึ้นมาบนหน้าจอ Application โดยมีการแสดงแบบจากด้านล่างขึ้นด้านบน แต่ก็สามารถที่จะเปลี่ยน Effect เมื่อทำการแสดงได้โดยใช้คำสั่ง&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;code&gt;window.open({modal:true,&lt;br /&gt;
modalTransitionStyle: Ti.UI.iPhone.MODAL_TRANSITION_STYLE_FLIP_HORIZONTAL,&lt;br /&gt;
modalStyle: Ti.UI.iPhone.MODAL_PRESENTATION_FORMSHEET})&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
ในส่วนของ Transition ของ Modal นั้นจะประกอบด้วย&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;MODAL_TRANSITION_STYLE_COVER_VERTICAL&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;เป็นการแสดง Modal แบบจากล่างขึ้นด้านบน&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;MODAL_TRANSITION_STYLE_CROSS_DISSOLVE &lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;เป็นการแสดง Modal แบบค่อย ๆ Fade โดยที่หน้าจอที่เรียกจะ Fade Out และหน้าจอที่ถูกเรียกจะ Fade In เพื่อแสดง&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;MODAL_TRANSITION_STYLE_FLIP_HORIZONTAL &lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;เป็นการแสดง Modal แบบพลิกหน้าจอ&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;MODAL_TRANSITION_STYLE_PARTIAL_CURL&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;เป็นการแสดงเหมือนกับการเปิดหน้ากระดาษ&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div&gt;
และในส่วนของ Modal Style นั้นก็จะประกอบไปด้วย&amp;nbsp;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;MODAL_PRESENTATION_CURRENT_CONTEXT&amp;nbsp;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;จะเป็นการแสดง Modal โดยนำ Style จากหน้าจอที่ทำการเรียกให้ Modal นี้ทำงาน&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;MODAL_PRESENTATION_FORMSHEET&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;จะเป็นการเรียก Modal มาแสดงโดยที่จะมีขนาดเล็กกว่า หน้าจอที่ทำการเรียกเล็กน้อย&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;MODAL_PRESENTATION_FULLSCREEN&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;จะเป็นการเรียก Modal ขึ้นมาแสดงแบบเต็มหน้าจอ&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;MODAL_PRESENTATION_PAGESHEET&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;จะเป็นการเรียก Modal ขึ้นมาโดยมีขนาดเท่ากับหน้าจอที่ใช้งานในแนวตั้งเท่านั้น&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div&gt;
เป็นอย่างไรกันบ้างครับ ลองเอาไปใช้กันดูนะครับ เผื่อจะมีแบบไหนที่ถูกใจ เพื่อเปลี่ยนให้ Application มีลูกเล่นในการแสดงผลมากยิ่งขึ้นครับ&amp;nbsp;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/7089624412542724605/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2012/10/window-modal-transition-titanium-studio.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/7089624412542724605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/7089624412542724605'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2012/10/window-modal-transition-titanium-studio.html' title='รู้จักกับ Transition (iOS) และ การแสดง Window แบบ Modal'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjq-Oujk2HRqGoo47Zcm3iG3Z08ao7_HR-W4NDUpBVGJdWBEsSzWBsfRPiorYzNkUEspJdNMsBrkxEpElB2i5wW6XdfWJIDvsz-lBCyCyxljdiC2GsSm0ZaOE7hHNn1KNTPiBivguQxHH1/s72-c/app-transition.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-248397502256164242</id><published>2012-10-09T21:27:00.000+07:00</published><updated>2012-10-31T11:40:32.019+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="ios"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile Developer"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Studio"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium.App"/><title type='text'>รู้จักกับ Titanium.App</title><content type='html'>สวัสดีครับบทความนี้จะกล่าวถึง Module ที่อยู่ใน Level สูงสุดของ Titanium ครับนั่นก็คือ Module Titanium.App&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_jmX3QGzOIXY2F9UZacEwCzG1iR_3YEUV5sWn-7NRe4pcmqPPtJQLWRkIidAp_jOk2LNWW-5zgAc0slSqDucvKoFldxlouwkA86aZkkf3Gk_IsskFqD8f0Eot4Dfr5YOH7mHQLDmWLwkr/s1600/banner-titanium.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Titanium Studio&quot; border=&quot;0&quot; height=&quot;156&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_jmX3QGzOIXY2F9UZacEwCzG1iR_3YEUV5sWn-7NRe4pcmqPPtJQLWRkIidAp_jOk2LNWW-5zgAc0slSqDucvKoFldxlouwkA86aZkkf3Gk_IsskFqD8f0Eot4Dfr5YOH7mHQLDmWLwkr/s400/banner-titanium.png&quot; title=&quot;TItanium Studio&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
โดยความสามารถของ Module นี้ก็คือ มันสามารถที่จะเข้าถึง Information ต่าง ๆ ของ Application ได้ตอน Runtime และสามารถเข้าอ่านค่าต่าง ๆ ที่ถูกสร้างเอาไว้ในไฟล์ tiapp.xml อีกด้วย เช่น appid , applicaton name หรือ url ของ application&lt;br /&gt;
&lt;br /&gt;
อีกหน้าที่ของ Titanium.App นี้คือ เป็น Module ที่เอาไว้สร้าง Golbal Event สำหรับ Application ได้ โดยสามารถเพิ่ม Event ให้กับ Application ด้วยคำสั่ง&lt;br /&gt;
&lt;code&gt;Titanium.App.addEventListener(&#39;app:MyCustomEvent&#39;,customFunction);&lt;br /&gt;
//คำว่า &#39;app&#39; นั้นเป็น Prefix ที่เอาไว้ระบุว่ามันคือ event ของ App ซึ่งจะระบุหรือไม่ระบุก็ได้&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
ส่วนวิธีการเเรียกใช้นั้นเราก็สามารถเรียกได้ด้วยคำสั่ง&lt;/div&gt;
&lt;code&gt;Titanium.App.fireEvent(&#39;app:MyCustomEvent&#39;);&lt;/code&gt;&lt;br /&gt;
และตัวของ Titanium.App เองก็สามารถที่จะจัดเก็บตัวแปรที่เป็นลักษณะของ Global ได้โดยใช้คำสั่ง&lt;br /&gt;
&lt;code&gt;Titanium.App.customValiable = &#39;MyValue&#39;;&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
ส่วนวิธีการเรียกใช้ก็สามารถระบุ ตามที่เรากำหนดค่าเอาไว้ได้เลย คือ&amp;nbsp;&lt;/div&gt;
&lt;code&gt;var myvalue = Titanium.App.customValiable;&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
ในส่วนของรายละเอียด ต่าง ๆ ของ &amp;nbsp;Titanium.App นี้นั้นมีค่อนข้างเยอะผมขอยกตัวอย่างเฉพาะที่นิยมนำมาใช้กันนะครับ&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Poperty&lt;/b&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;id&lt;/span&gt;&lt;/i&gt; แสดง Application ID จากไฟล์ tiapp.xml&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;name&lt;/span&gt;&lt;/i&gt; แสดง Application Name จากไฟล์ tiapp.xml&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;url&lt;/span&gt;&lt;/i&gt; แสดง Application url จากไฟล์ tiapp.xml&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;version&lt;/span&gt;&lt;/i&gt; แสดง Application Version จากไฟล์​ tiapp.xml&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;Method&lt;/b&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;addEventListener&lt;/span&gt;&lt;/i&gt; เพิ่ม Gobal Event ให้กับ Applicaiton&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;fireEvent&lt;/span&gt;&lt;/i&gt; เรียกใช้งาน Global Event ที่ได้สร้างเอาไว้&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;removeEventListener&lt;/span&gt;&lt;/i&gt; ลบ Global Event ออกจาก Application&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;Event&lt;/b&gt;&amp;nbsp;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;keyboardFrameChanged&lt;/span&gt;&lt;/i&gt; เป็น Event ที่ตรวจจับการทำงานของ Soft Keyboard เมื่อมีการแสดงหรือเมื่อปิดลงไป&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;pause&lt;/span&gt;&lt;/i&gt; เป็น Event ที่จะถูกเรียกเมื่อ Application มีการเปลี่ยนสถานะจาก Active เป็น Inactive ในระบบ Multi Tasking&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;paused&lt;/span&gt;&lt;/i&gt; เป็น Event ที่จะถูกเรียกใช้งานเมื่อ Application ถูกเปลี่ยนสภาพจาก Active เป็น Background Application ในระบบ Multi Tasking&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;resume&lt;/span&gt;&lt;/i&gt; เป็น Event ที่ถูกเรียกใช้่งานเมื่อ Application ถูกเปลี่ยนสภาพจาก Inactive เป็น Active ในระบบ Multi Tasking&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;resumed&lt;/span&gt;&lt;/i&gt; เป็น Event ที่ถูกเรียกใช้งานเมื่อ Application ถูกกลับมาใช้งานได้อีกครั้งหนึ่ง&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;span style=&quot;color: red;&quot;&gt;!!!! ข้อควรระวังในการใช้ Titanium.App&lt;/span&gt; เนื่องจาก Titanium.App นั้นเป็น Top Level ดังนั้นการที่เรากำหนดตัวแปรหรือ Event ให้กับมันมากเกินไปจะเกิดปัญหาเรื่องของ Memory ได้ดังนั้นก่อนการใช้งานควรคำนึงถึงส่วนนี้ด้วยนะครับ&lt;br /&gt;
&lt;br /&gt;
เอาหล่ะครับขอจบเรื่องของ Titanium.App เอาไว้แค่ตรงนี้ก่อน ในบทความหน้าผมจะเขียนโปรแกรมกับ Titanium.App เพื่อแสดงรายละเอียดของการเรียกใช้งาน Event ต่าง ๆ ให้ทุก ๆ ท่านได้เข้าใจอีกครั้ง นะครับ&amp;nbsp;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/248397502256164242/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2012/10/titanium-app-using.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/248397502256164242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/248397502256164242'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2012/10/titanium-app-using.html' title='รู้จักกับ Titanium.App'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_jmX3QGzOIXY2F9UZacEwCzG1iR_3YEUV5sWn-7NRe4pcmqPPtJQLWRkIidAp_jOk2LNWW-5zgAc0slSqDucvKoFldxlouwkA86aZkkf3Gk_IsskFqD8f0Eot4Dfr5YOH7mHQLDmWLwkr/s72-c/banner-titanium.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-3480364592200338650</id><published>2012-10-08T21:40:00.000+07:00</published><updated>2012-10-23T10:48:19.211+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="CommonJS"/><category scheme="http://www.blogger.com/atom/ns#" term="ios"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile Developer"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Studio"/><title type='text'>วิธีการใช้ CommonJS ใน Titanium Studio</title><content type='html'>หลังจากที่เราได้รู้จักกับ CommonJS ไปแล้วในบทความ&lt;a href=&quot;http://mobidevth.blogspot.com/2012/10/common-js-titanium-studio.html&quot; target=&quot;_blank&quot;&gt; รู้จักกับ Common JS&lt;/a&gt; นั้นในบทความนี้จะกล่าวถึงวิธีการเขียน Module ให้อยู่ใน รูปแบบ ของ Common JS เพื่อที่จะนำมาใช้ ใน Titanium Studio นี้ครับ&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKYz4sjUlrfiW04hkxxzD6WZIjYlfd2o1fUybd8wMBxFkDlWJRtup22M3m54qoa6EwZmS1vi-osZmTjvLMFp5l9-4vRaRpbtSQvEGoLxvsDobdn21fEMEmcw6Pg-uM0Ge9i1Mao4ZnKx73/s1600/Website-Logo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKYz4sjUlrfiW04hkxxzD6WZIjYlfd2o1fUybd8wMBxFkDlWJRtup22M3m54qoa6EwZmS1vi-osZmTjvLMFp5l9-4vRaRpbtSQvEGoLxvsDobdn21fEMEmcw6Pg-uM0Ge9i1Mao4ZnKx73/s1600/Website-Logo.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
เรามาเริ่มกันเลยดีกว่าครับ จากบทความ&amp;nbsp;&lt;a href=&quot;http://www.mobidevthai.com/2012/10/common-js-titanium-studio.html&quot; target=&quot;_blank&quot;&gt;รู้จักกับ Common JS&lt;/a&gt;&amp;nbsp;นั้นผมได้กล่าวถึง คำจำกัดความของ Common JS เอาไว้นั่นก็คือ exports และ module.exports ซึ่งการที่เราจะใช้ตัวใดในการทำงานนั้นไปดูตัวอย่างกันครับ&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
เช่นเดิมครับสร้าง Project ใหม่ครับ จากนั้นเลือก Template เป็น Single Window Applicatoin (หรือจะแบบอื่น ๆ ก็ได้ครับ) จากนั้นทำการสร้างไฟล์ขึ้นมา 1 ไฟล์ครับ ชื่อว่า window.js โดย File นี้จะเป็นการสร้าง Window ให้กับ Application นี้ จากนั้นเราก็เปิดไฟล์ขึ้นมาครับ (สร้างใน Folder Resource นะครับ หาอยู่นอก Resource แล้วจะไม่สามารถเรียกใช้งานได้ครับ)&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
สร้าง Window ที่ไฟล์นี้ครับ โดยใช้คำสั่ง&lt;/div&gt;
&lt;code&gt;exports.load = function(){&lt;br /&gt;
var win = Ti.UI.createWindow({&lt;br /&gt;
width : Ti.Platform.displayCaps.platformWidth,&lt;br /&gt;
backgroundColor : &#39;#fff&#39;&lt;br /&gt;
});&lt;br /&gt;
win.open();&lt;br /&gt;
};&lt;/code&gt;&lt;br /&gt;
จากนั้นกลับไปยังไฟล์ &amp;nbsp;app.js ครับ แล้วก็ เหมือนเดิมครับ &quot;ลบ&quot; ทั้งหมดออก จากนั้นทำการเรียกใช้ module window ที่เราสร้างขึ้นมาครับ ด้วยคำสั่ง&lt;/div&gt;
&lt;code&gt;var win = require(&#39;window&#39;);&lt;/code&gt;&lt;br /&gt;
โดยคำสั่งนี้จะมีผลทำให้ไฟล์ window.js นั้นถูก โหลดขึ้นมา ครับ จากนั้นเราก็ทำการสร้าง Window จาก Module window ครับ โดยใช้คำสั่ง&lt;br /&gt;
&lt;code&gt;win.load();&lt;/code&gt;&lt;br /&gt;
ทดลองรันดูครับจะเห็นว่าเมื่อ Application ทำงานนั้น Module ก็จะสร้าง window ให้เรา แบบนี้ครับ&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwSUlPcAdsZ6Nwk5SaKS3NUXMbWBeg0eKKVd_GU4gvh9hb30cEIogHlSzfIxKrXxnWrTwF2bp4cdnixS9dlB-8GW-wnOWB-h5XN8nhSjnq4rG9dbFwY1pfPgkaWoqojbJ9yTqdxFdNyRir/s1600/Screen+Shot+2012-10-08+at+21.34.13+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwSUlPcAdsZ6Nwk5SaKS3NUXMbWBeg0eKKVd_GU4gvh9hb30cEIogHlSzfIxKrXxnWrTwF2bp4cdnixS9dlB-8GW-wnOWB-h5XN8nhSjnq4rG9dbFwY1pfPgkaWoqojbJ9yTqdxFdNyRir/s320/Screen+Shot+2012-10-08+at+21.34.13+PM.png&quot; width=&quot;217&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
โดยที่ ในไฟล์ app.js นั้นทำหน้าที่เพียงเรียกใช้ Function ที่อยู่ใน module window นั่นเองครับ ซึ่งนั่นหมายความว่าหากเราต้องการเพิ่มหรือเปลี่ยนแปลง Object ลงไปใน window เราก็จะทำการแก้ไขเพียงแค่ ไฟล์ window.js โดยที่ไม่ต้องไปยุ่งกับ app.js เลย ยกตัวอย่างเช่น หาผมต้องการเพิ่ม label ลงไปใน window ผมก็ไปทำการเพิ่ม lable ใน windows.js แบบนี้&lt;/div&gt;
&lt;code&gt;exports.load = function(){&lt;br /&gt;
var win = Ti.UI.createWindow({&lt;br /&gt;
width : Ti.Platform.displayCaps.platformWidth,&lt;br /&gt;
backgroundColor : &#39;#fff&#39;&lt;br /&gt;
});&lt;br /&gt;
var label = Ti.UI.createLabel({&lt;br /&gt;
text : &#39;Hello Titanium&#39;,&lt;br /&gt;
color : &#39; #f00&#39;&lt;br /&gt;
});&lt;br /&gt;
win.add(label);&lt;br /&gt;
win.open();&lt;br /&gt;
};&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
ทดลองรันดูครับ จะเห็นมี Label แสดงขึ้นมาบนหน้าจอของโปรแกรม โดยที่เราไม่ต้องทำการแก้ไขไฟล์ app.js แต่อย่างใด&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAeGi4u2lsFeL9uSyJ9M3l8gDlyl01npQVeDR-deiCEgvCXf2hZGFQQGXRl3N_3WzmVrRRxddmmnbDkSsSJJw8tQQZlPeTYKxGNYOCvNJUw8j0bfpBc3zIELd4zfDNBI01JUh7RcgZXtdn/s1600/Screen+Shot+2012-10-08+at+21.35.57+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAeGi4u2lsFeL9uSyJ9M3l8gDlyl01npQVeDR-deiCEgvCXf2hZGFQQGXRl3N_3WzmVrRRxddmmnbDkSsSJJw8tQQZlPeTYKxGNYOCvNJUw8j0bfpBc3zIELd4zfDNBI01JUh7RcgZXtdn/s320/Screen+Shot+2012-10-08+at+21.35.57+PM.png&quot; width=&quot;216&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
โดยการ exports นั้นนอกจากที่จะเอาไว้ใช้เรียก Function แล้วยังสามารถนำไปใช้เพื่อ exports ตัวแปรต่าง ๆ ที่ต้องการได้อีกด้วย เช่น หากต้องการที่จะ exports ค่าความกว้างของหน้าจอจาก ไฟล์ window.js นั้นก็สามารถทำจะทำได้แบบนี้ ครับ&lt;/div&gt;
&lt;code&gt;exports.windowwidth = Ti.Platform.displayCaps.platformWidth;&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
ส่วนการเรียกใช้นั้นเหมือนเดิมครับ&amp;nbsp;&lt;/div&gt;
&lt;code&gt;var width = window.windowwidth;&lt;/code&gt;&lt;br /&gt;
แล้ว module.export หล่ะครับใช้งานอย่างไร ในกรณีของ module.export นั้นส่วนมากที่ใช้จะถูกใช้ในลักษณะของ Class ต่าง ๆ ยกตัวอย่างเช่น ต้องการสร้าง Class ที่เอาไว้เก็บข้อมูลของบุคคล โดยที่สามารถเรียกใช้เพื่อแสดงชื่อและนามสกุลพร้อม ๆ กันก็จะสามารถทำได้ดังนี้ครับ&lt;br /&gt;
&lt;code&gt;function Person(firstName,lastName) {&lt;br /&gt;
this.firstName = firstName;&lt;br /&gt;
this.lastName = lastName;&lt;br /&gt;
}&lt;br /&gt;
Person.prototype.fullName = function() {&lt;br /&gt;
return this.firstName+&#39; &#39;+this.lastName;&lt;br /&gt;
};&lt;br /&gt;
module.exports = Person;&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
โดยสร้างเอาไว้เป็นไฟล์ชื่อ Person.js ส่วนวิธีการเรียกใช้นั้นก็จะเหมือนกับ การที่เราเรียกใช้ Window ครับนั่้นก็คือ&amp;nbsp;&lt;/div&gt;
&lt;code&gt;var Person = require(&#39;Person&#39;);&lt;br /&gt;
var people = new Person(&#39;Johnny&#39;,&#39;Deep&#39;);&lt;br /&gt;
var jonnnydep = people.fullName();&lt;br /&gt;
// ตรงนี้จะได้ค่ากลับมาเป็น &#39;Johny Deep&#39;&lt;/code&gt; &lt;br /&gt;
&lt;div&gt;
จากตัวอย่างที่ได้ให้ไว้จะแสดงให้เห็นถึงวิธีการใช้งาน CommonJS กับ Titanium Mobile ส่วนวิธีการที่จะนำไปประยุกษ์ หรือ นำไปปรับใช้เพื่อให้การพัฒนาโปรแกรม บน Mobile ให้ได้มีประสิทธิภาพมากยิ่งขึ้น&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
ส่วนในบทความหน้านั้น จะเป็นเรื่องอะไรนั้นติดตามอ่านกันต่อไปได้เลยนะครับ หากมีคำถามหรือข้อสงสัยก็ถามกันมาได้นะครับ แล้วก็อย่าลืมกด Like Fanpage ของ &lt;a href=&quot;http://www.facebook.com/mobidevthai?ref=hl&quot; target=&quot;_blank&quot;&gt;Mobidevthai&lt;/a&gt; ด้วยนะครับ&amp;nbsp;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/3480364592200338650/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2012/10/how-to-use-commonjs-titanium-stuido.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/3480364592200338650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/3480364592200338650'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2012/10/how-to-use-commonjs-titanium-stuido.html' title='วิธีการใช้ CommonJS ใน Titanium Studio'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKYz4sjUlrfiW04hkxxzD6WZIjYlfd2o1fUybd8wMBxFkDlWJRtup22M3m54qoa6EwZmS1vi-osZmTjvLMFp5l9-4vRaRpbtSQvEGoLxvsDobdn21fEMEmcw6Pg-uM0Ge9i1Mao4ZnKx73/s72-c/Website-Logo.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-4725453464849125613</id><published>2012-10-05T16:06:00.000+07:00</published><updated>2013-02-13T13:11:08.877+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CommonJS"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile Developer"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Studio"/><title type='text'>รู้จักกับ CommonJS</title><content type='html'>&lt;br /&gt;
อย่างที่เราทราบกันนะครับว่า JavaScript นั้นสามารถทำงานได้อย่างรวดเร็ว แต่ด้วยข้อจำกัด ทำให้ JavaScript API นั่นสามารพัฒนาอยู่บน Web Browser เท่านั้นและด้วยตัว มาตรฐานของมัน ไม่เหมาะกับการใช้พัฒนาในระยะยาวอีกด้วย ซึ่ง Common JS เป็น API ที่เข้ามาเพื่อรองรับกับปัญหาดังกล่าวนี้ โดยตัว API ของ Common JS นั้นได้ทำการร รวบรวม Library ของ Python, Ruby และ Java มาไว้ด้วยกัน ทำให้สามารถเข้าถึง Application ที่ถูกพัฒนา Complier ด้วย Javascript API ที่แตกต่างกันได้อีกด้วย นั่นหมายความว่า เราสามารถนำ Java script มาใช้พัฒนา Application ต่าง ๆ ได้เช่น&lt;br /&gt;
&lt;ul type=&quot;disc&quot;&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;Server-side JavaScript applications&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul type=&quot;disc&quot;&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;Command line tools&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul type=&quot;disc&quot;&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;Desktop GUI-based applications&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul type=&quot;disc&quot;&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;Hybrid applications (Titanium, Adobe AIR)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span lang=&quot;TH&quot; style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;หรือหมายความว่าเราสามารถเขียน&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;Javascript&amp;nbsp;&lt;span lang=&quot;TH&quot;&gt;เพื่อไปรันที่อื่น ๆ โดยที่เราไม่จำเป็นต้องใช้&amp;nbsp;&lt;/span&gt;Web Browser&amp;nbsp;&lt;span lang=&quot;TH&quot;&gt;เพื่อ รัน&amp;nbsp;&lt;/span&gt;Script&amp;nbsp;&lt;span lang=&quot;TH&quot;&gt;นั่นเอง&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;&lt;span lang=&quot;TH&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
เอาหล่ะครับ ทำไมเราถึงต้องรู้จักกับ Common JS เนื่องจาก API นี้ จะช่วยให้เราเขียนโปรแกรม ในรูปแบบของ OOP และการจัดการ  Code ที่มีประสิทธิภาพมากยิ่งขึ้นด้วย ใน Titanium Studio เอง นั้นมีการ  นำเอา API นี้ฝังอยู่ใน Framework มาเป็นที่เรียบร้อยแล้ว เราไปดูกันครับ ว่าเราจะใช้งาน CommonJS ใน  Titanium Studio นี้อย่างไร&lt;br /&gt;
&lt;br /&gt;
ก่อนอื่นเรามาทำความเข้าใจกับคำจำกัดความของ Common JS กันก่อนครับ&lt;br /&gt;
&lt;ul type=&quot;disc&quot;&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;Module&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;&amp;nbsp;-
     &lt;span lang=&quot;TH&quot;&gt;ใน &lt;/span&gt;Titnaium &lt;span lang=&quot;TH&quot;&gt;นั้นจะหมายถึงไฟล์​ที่มี
     นามสกุลเป็น .&lt;/span&gt;js&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul type=&quot;disc&quot;&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;Resources&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;&amp;nbsp;-
     Folder Resource &lt;span lang=&quot;TH&quot;&gt;ใน &lt;/span&gt;Titanium Studio &lt;span lang=&quot;TH&quot;&gt;นั่นเองครับ&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul type=&quot;disc&quot;&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;exports&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;&amp;nbsp;–
     &lt;span lang=&quot;TH&quot;&gt;เป็นตัวแปรหรือ &lt;/span&gt;Function &lt;span lang=&quot;TH&quot;&gt;ที่อยู่ใน &lt;/span&gt;module
     &lt;span lang=&quot;TH&quot;&gt;เอาไว้เพื่อสร้างเป็นลักษณะของ &lt;/span&gt;Public &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul type=&quot;disc&quot;&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;module.exports&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;&amp;nbsp;-
     &amp;nbsp;&lt;span lang=&quot;TH&quot;&gt;เป็นคำสั่งเพื่อประกาศให้ทุก &lt;/span&gt;Object &lt;span lang=&quot;TH&quot;&gt;ที่อยู่ใน &lt;/span&gt;Module &lt;span lang=&quot;TH&quot;&gt;นั่น อยู่ในรูปแบบของ &lt;/span&gt;Public&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span lang=&quot;TH&quot; style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;ในการใช้งาน &lt;/span&gt;&lt;span style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;Common JS &lt;span lang=&quot;TH&quot;&gt;ใน &lt;/span&gt;Titanium &lt;span lang=&quot;TH&quot;&gt;นั้น
เราต้องใช้ &lt;/span&gt;function require &lt;span lang=&quot;TH&quot;&gt;เพื่อทำการกำหนด &lt;/span&gt;module &lt;span lang=&quot;TH&quot;&gt;ที่เราต้องการใช้&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 5pt;&quot;&gt;
&lt;code&gt;var module = require(&#39;MyModule&#39;);&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;span lang=&quot;TH&quot; style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;โดย &lt;/span&gt;&lt;span style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;Parameter
&lt;span lang=&quot;TH&quot;&gt;ที่ส่งให้กับ &lt;/span&gt;function require &lt;span lang=&quot;TH&quot;&gt;นั้นจะบ่งบอกให้ที่อยู่ของ
&lt;/span&gt;module &lt;span lang=&quot;TH&quot;&gt;ที่เราต้องการเรียกใช้หาร &lt;/span&gt;function &lt;span lang=&quot;TH&quot;&gt;โดย &lt;/span&gt;function require &lt;span lang=&quot;TH&quot;&gt;นี้จะ &lt;/span&gt;return &lt;span lang=&quot;TH&quot;&gt;ค่ากลับมาเป็น &lt;/span&gt;javascript object &lt;span lang=&quot;TH&quot;&gt;พร้อมด้วย &lt;/span&gt;Property
,&amp;nbsp;functions &lt;span lang=&quot;TH&quot;&gt;และ สิ่งต่าง ๆ ที่อยู่ใน &lt;/span&gt;module &lt;span lang=&quot;TH&quot;&gt;ที่ประกาศไว้ เป็น &lt;/span&gt;Public &amp;nbsp;&lt;span lang=&quot;TH&quot;&gt;ออกมาด้วย
ยกตัวอย่างเช่น ใน &amp;nbsp;&lt;/span&gt;module &amp;nbsp;&lt;span lang=&quot;TH&quot;&gt;ที่ชื่อว่า &lt;/span&gt;MyModule
&lt;span lang=&quot;TH&quot;&gt;นี้มี &lt;/span&gt;function &lt;span lang=&quot;TH&quot;&gt;ที่ชื่อว่า &amp;nbsp;&lt;/span&gt;sayHello &lt;span lang=&quot;TH&quot;&gt;โดย &lt;/span&gt;function
&lt;span lang=&quot;TH&quot;&gt;นี้จะทำการ &lt;/span&gt;return &lt;span lang=&quot;TH&quot;&gt;คำว่า &lt;/span&gt;&#39;Hello &#39; +
paremeter &lt;span lang=&quot;TH&quot;&gt;ที่ส่งเข้ามาใน &lt;/span&gt;function &lt;span lang=&quot;TH&quot;&gt;ก็
สามารถเขียนได้แบบนี้&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;code&gt;var module = require(&#39;MyModule&#39;);
module.sayHello(&#39;Titanium&#39;);
//ตรงนี้สิ่งที่ได้กลับมาก็คือ คำว่า &#39;Hello Titanium&#39;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;span lang=&quot;TH&quot; style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;ในกรณีที่มีการเรียกใช้ &lt;/span&gt;&lt;span style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;module &lt;span lang=&quot;TH&quot;&gt;อื่น ๆ ที่ทำการ
คอมไพล์​เป็นที่เรียบร้อยแล้วนั้นก็สามารถทำได้ โดยการแก้ไข &lt;/span&gt;file tiapp.xml
&lt;span lang=&quot;TH&quot;&gt;โดยเพิื่ม &lt;/span&gt;module &lt;span lang=&quot;TH&quot;&gt;เข้าไป แล้วทำการ &lt;/span&gt;require
module &lt;span lang=&quot;TH&quot;&gt;นั้น ๆ&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;code&gt;&amp;lt;modules&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;module version=&quot;1.0&quot;&amp;gt;ti.paypal&amp;lt;/module&amp;gt;
&amp;lt;/modules&amp;gt;
&lt;/code&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;span lang=&quot;TH&quot; style=&quot;font-family: Tahoma, sans-serif;&quot;&gt;จากนั้นใน&lt;/span&gt;&lt;span style=&quot;font-family: Tahoma, sans-serif;&quot;&gt; Code &lt;span lang=&quot;TH&quot;&gt;ที่ต้องการเรียกใช้ก็ใช้เพียงแค่ &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 5pt;&quot;&gt;
&lt;code&gt;var paypal = require(&#39;ti.paypal&#39;);&lt;/code&gt;&lt;/div&gt;
&lt;br /&gt;
โดย Titanium ก็จะทำการ โหลด Module ti.paypal แต่จะไม่ไปหาไฟล์ชื่อ ti.paypal ใน  folder resource  แต่อย่างใด แต่ถ้าในกรณีที่ ไปหา module  ที่ require แต่ไม่ได้ทำการเพิ่มลงไปใน tiapp.xml ตัว Titanium จะพยายามหาใน  Folder Resource ซึ่งนั่นจะทำให้ไม่สามารถรันได้นั่นเองครับ ส่วนวิธีการอ้างอิง javascript module path นั้น  อ้างอิงจากไฟล์ที่ผมมี คือ &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;code&gt;[Project Folder]/Resource/lib/MyModule.js&lt;o:p&gt;&lt;/o:p&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
ก็สามารถที่จะเรียกใช้ได้แบบนี้ครับ
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;code&gt;var mymodule = require(&#39;lib/MyModule&#39;);&lt;/code&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Times New Roman&#39;, serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
จะเห็นได้ว่า Common JS นี้จะช่วยให้เราพัฒนาโปรแกรมได้อย่างมีระเบียบและสามารถแก้ไขได้โดยง่าย ในบทความหน้าเราจะมาเริ่มเขียน Module เพื่อใช้ใน Application ต่อ ๆ ไปครับ&amp;nbsp;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/4725453464849125613/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2012/10/common-js-titanium-studio.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/4725453464849125613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/4725453464849125613'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2012/10/common-js-titanium-studio.html' title='รู้จักกับ CommonJS'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-3194231785727912066</id><published>2012-10-05T12:37:00.002+07:00</published><updated>2012-10-17T15:42:32.814+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Mobile Developer"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium SDK"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Studio"/><title type='text'>Titanium SDK Update 2.1.3</title><content type='html'>ตอนนี้ Titanium SDK ได้ออก Update เป็น Version 2.1.3 แล้วนะครับโดยมีการเพิ่ม Feature ต่าง ๆ เข้าไปพอสมควร หลัก ๆ เลยคงเป็นเรื่องของการ สนับสนุน iPhone 5 และ iOS6 ครับ แต่จะมีอะไรบ้างนั้นไปดูกันเลยครับ&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjcQ_a4bi2eRsjfWosrs_IWE1_PNYrQC_xsa7TzzG4FTB5Y_M088gAlItUrW-enRPe3eM1kG1o1f8S9lodlIIq83BZ0ld4Q-RSL-1kqCSsQoCAzGpthtGNweVZ08RhNi9XYs-Bmiy0k7tX/s1600/banner-sdk.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;95&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjcQ_a4bi2eRsjfWosrs_IWE1_PNYrQC_xsa7TzzG4FTB5Y_M088gAlItUrW-enRPe3eM1kG1o1f8S9lodlIIq83BZ0ld4Q-RSL-1kqCSsQoCAzGpthtGNweVZ08RhNi9XYs-Bmiy0k7tX/s320/banner-sdk.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: white; font-family: &#39;Heletica Neue&#39;, Tahoma, Arial, sans-serif; font-size: 12px; margin-bottom: 15px; margin-top: 15px;&quot;&gt;
&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;อย่างแรกเลยคงหนีไม่พ้นการรองรับ iPhone5 และ iOS6 โดย ทาง Appcelator เองได้ทำการทดสอบ SDK ตัวนี้บน Xcode 4.5 โดยมีการเปลี่ยนแปลงดังนี้ครับ&lt;br /&gt;
&lt;div style=&quot;background-color: white; margin-bottom: 15px; margin-top: 15px;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Heletica Neue, Tahoma, Arial, sans-serif;&quot;&gt;ตัว iOS6 SDK นั้น ไม่รองรับ AMRV6 โดยตัว Titanium SDK นี้จะรองรับ iOS ที่ Version 4.3 เป็นต้นไป สามารถระบุ ios version ได้จากไฟล์ tiapp.xml แบบนี้&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;code&gt;&amp;lt;ios&amp;gt;
 &amp;lt;min-ios-ver&amp;gt;4.3&amp;lt;/min-ios-ver&amp;gt;
&amp;lt;/ios&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: monospace, serif; white-space: pre-wrap;&quot;&gt;วีธีการเข้าถึง Contacts ที่เปลี่ยนไป โดยใน SDK Version นี้นั้น จะเพิ่มเติมในส่วนของ Authroization ในการเข้าถึง Contacts ใน iOS6 ด้วย โดยมีการเพิ่ม Property ให้กับ Module Contact นั่นคือ contactsAuthorization เพื่อตรวจสอบ สิทธิในการใช้งาน Contact โดยใน Property นี้นั้นจะประกอบไปด้วย&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: monospace, serif; white-space: pre-wrap;&quot;&gt;AUTHORIZATION_AUTHORIZED&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: monospace, serif; white-space: pre-wrap;&quot;&gt;AUTHORIZATION_DENIED&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: monospace, serif; white-space: pre-wrap;&quot;&gt;AUTHORIZATION_RESTRICTED&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: monospace, serif; white-space: pre-wrap;&quot;&gt;AUTHORIZATION_UNKNOWN&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: monospace, serif; white-space: pre-wrap;&quot;&gt;โดยในส่วนของ Android หรือ iOS Version ก่อนหน้า นั้นจะส่งค่ากลับมาเป็น AUTHORIZATION_AUTHORIZED เสมอ&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: monospace, serif;&quot;&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;รองรับ Splash Screen ของ iPhone 5  โดยจะรองรับ ขนาดหน้าจอใหม่ของ iPhone 5 (&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Heletica Neue&#39;, Tahoma, Arial, sans-serif;&quot;&gt;1136 x 640 pixels) โดย เราสามารถสร้างไฟล์ Splash Screen โดยลงท้ายด้วย&amp;nbsp;&lt;/span&gt;-568h@2x เช่น Default-568h@2x.png &lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Heletica Neue, Tahoma, Arial, sans-serif;&quot;&gt;ใน iOS6 นั้นจะไม่รองรับการสร้าง Modal Dialog เป็นลักษณะการกลับหัว ของหน้าจอ (&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Heletica Neue&#39;, Tahoma, Arial, sans-serif;&quot;&gt;upside-down portrait orientation อธิบายไม่ถูกจริง ๆ )&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Heletica Neue, Tahoma, Arial, sans-serif;&quot;&gt;การ&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Heletica Neue&#39;, Tahoma, Arial, sans-serif;&quot;&gt;embedded&amp;nbsp;Youtube นั้นจะไม่รองรับอีกต่อไป เนื่องจาก youtube ไม่มีอยู่ใน iOS6 ดังนั้น การที่เรา&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Heletica Neue&#39;, Tahoma, Arial, sans-serif;&quot;&gt;embedded&amp;nbsp;youtube ลงใน App แบบนี้ &quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: monospace, serif;&quot;&gt;http://www.youtube.com/watch?v=oHg5SJYRHA0&quot; จะไม่สามารถใช้งานได้ ให้ไปใช้ วิธีการ&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Heletica Neue&#39;, Tahoma, Arial, sans-serif;&quot;&gt;embedded&amp;nbsp;จากที่นี่แทน &amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://developers.google.com/youtube/player_parameters&quot; style=&quot;background-color: white; font-family: &#39;Heletica Neue&#39;, Tahoma, Arial, sans-serif;&quot;&gt;developers.google.com/youtube/player_parameters&lt;/a&gt;&lt;span style=&quot;font-family: Heletica Neue, Tahoma, Arial, sans-serif;&quot;&gt;&amp;nbsp;ครับ&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;font-family: &#39;Heletica Neue&#39;, Tahoma, Arial, sans-serif;&quot;&gt;เป็นอย่างไรกันบ้างครับ สำหรับ Version ใหม่ของ Titanium SDK ที่เอามาหลัก ๆ จะเป้นของ iOS ที่เปลี่ยนไป แต่อย่างไรก็ตาม ก็ยังมีส่วนอื่น ๆ ที่ทาง Titanium ได้ทำการแก้ไข เพิ่มเติมให้กับทั้ง iOS และ Android ด้วย ซึ่งเยอะมาก ๆ ครับ ลองไปอ่านกันต่อได้ที่ &lt;/span&gt;&lt;a href=&quot;http://docs.appcelerator.com/titanium/release-notes/?version=2.1.3.GA&quot; style=&quot;font-family: &#39;Heletica Neue&#39;, Tahoma, Arial, sans-serif;&quot; target=&quot;_blank&quot;&gt;Titanium SDK 2.1.3 Release Note&lt;/a&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace, serif; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: white; margin-bottom: 15px; margin-top: 15px;&quot;&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/3194231785727912066/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2012/10/titanium-sdk-update-213.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/3194231785727912066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/3194231785727912066'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2012/10/titanium-sdk-update-213.html' title='Titanium SDK Update 2.1.3'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjcQ_a4bi2eRsjfWosrs_IWE1_PNYrQC_xsa7TzzG4FTB5Y_M088gAlItUrW-enRPe3eM1kG1o1f8S9lodlIIq83BZ0ld4Q-RSL-1kqCSsQoCAzGpthtGNweVZ08RhNi9XYs-Bmiy0k7tX/s72-c/banner-sdk.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7901857616222060090.post-4437849635955589225</id><published>2012-10-05T05:14:00.000+07:00</published><updated>2012-10-04T23:26:48.151+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="badge"/><category scheme="http://www.blogger.com/atom/ns#" term="ios"/><category scheme="http://www.blogger.com/atom/ns#" term="iphone"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile Developer"/><category scheme="http://www.blogger.com/atom/ns#" term="Titanium Mobile"/><title type='text'>แสดงตัวเลขบน icon app (สำหรับ ios)</title><content type='html'>หลังจากหยุดเขียนไปซักพัักเนื่องจาก ไปติด NoSQL อยู่เลยทำให้ไม่มีโอกาศเขียน วันนี้เลยถือโอกาศมาเขียนบทความเพิ่มเติมให้ได้อ่านกัน แต่วันนี้เป็นเรื่องง่าย ๆ สบาย ๆ ก่อนละกันนะครับ นั่นก็คือ การแสดงตัวเลขบน icon ของ Application นั่นเองครับ&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfADdaDA1jVT5BU4_pvg1X-uRTI2cGG03yKX_U_4Iz-OCgm7zVTtbzNeVW6r9f33vVclIYTduW-9q-G7eEoX-4pD_b6Zi-wcCqLH_-Wlrj4eYxKKrLzpJRUe23WacNDZrcqHjcYEPjuX4W/s1600/badge.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfADdaDA1jVT5BU4_pvg1X-uRTI2cGG03yKX_U_4Iz-OCgm7zVTtbzNeVW6r9f33vVclIYTduW-9q-G7eEoX-4pD_b6Zi-wcCqLH_-Wlrj4eYxKKrLzpJRUe23WacNDZrcqHjcYEPjuX4W/s1600/badge.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;วิธีการก็ง่ายมาก ๆ ครับ เพียงแค่ใช้คำสั่ง&lt;br /&gt;
&lt;code&gt;Titanium.UI.iPhone.appBadge&lt;/code&gt;

&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
เท่านี้เราก็สามารถที่จะทำให้ icon App ของเรามีตัวเลขขึ้นมาแล้วหล่ะครับ&amp;nbsp;ลองไปทำกันเลยนะครับ โดยผมจะเริ่มจาก สร้าง Window ขึ้นมาก่อนครับ จากนั้นก็ใส่ ปุ่ม ลงไป 1 อันครับ โดยที่ปุ่มนี้จะทำการเพิ่มตัวเลขให้กับ icon ของ Application ของเรานะครับ&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;code&gt;var win = Titanium.UI.createWindow({
width : Titanium.Platform.displayCaps.platformWidth
})

var btnAdd = Titanium.UI.createButton({
title : &#39;add number&#39;
top : 50 ,
width : 120
})

win.add(btnAdd);&lt;/code&gt;

&lt;span class=&quot;s2&quot;&gt;จากนั้นก็ ใส่ Event ให้กับ ปุ่ม ครับ&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;code&gt;btnAdd.addEventListener(&#39;click&#39;,function({
   Titanium.UI.iPhone.appBadge += 1;
})&amp;nbsp;
&lt;/code&gt;&lt;br /&gt;
แล้วก็สั่งให้ Window เปิดครับ จากนั้นก็รันเลยครับ&amp;nbsp;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtgnl5dXQ99WkUMQtI2ERV4rKk5BjJvZ8fqhED8xDyXvzZzff2jtXtfq9rc-tjuzf77LwbIz7citbADJirNMbXTwnl_v_laH9AFMCHXTs5uG5bvJZYqjJdjQJQtCQp3AC4ivi842fXs8zj/s1600/Screen+Shot+2012-10-04+at+22.05.03+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtgnl5dXQ99WkUMQtI2ERV4rKk5BjJvZ8fqhED8xDyXvzZzff2jtXtfq9rc-tjuzf77LwbIz7citbADJirNMbXTwnl_v_laH9AFMCHXTs5uG5bvJZYqjJdjQJQtCQp3AC4ivi842fXs8zj/s400/Screen+Shot+2012-10-04+at+22.05.03+PM.png&quot; width=&quot;267&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
เสร็จแล้วลอง กด ปุ่มครับ แล้วทดลองกดที่ปุ่ม Home ครับ จะพบกับ iCon App ของเรานั้นมีตัวเลขขึ้นมาแล้วหล่ะครับ&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOyWmFfGJrKAcQo4TW6rWqalDnGuajsuCHnUUIh5YS1DXkaJ4PJcuOPoObezYZ7At2OZ8AlqQYKSgI87Gdc7YOa-gXlLo1DL5DuYeGUN-kMlOguu-ISkHuOaFi6Rd2MroGd18vuTpbT7Zz/s1600/Screen+Shot+2012-10-04+at+22.05.14+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOyWmFfGJrKAcQo4TW6rWqalDnGuajsuCHnUUIh5YS1DXkaJ4PJcuOPoObezYZ7At2OZ8AlqQYKSgI87Gdc7YOa-gXlLo1DL5DuYeGUN-kMlOguu-ISkHuOaFi6Rd2MroGd18vuTpbT7Zz/s400/Screen+Shot+2012-10-04+at+22.05.14+PM.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
ส่วนการ Reset นั้น เพียงแค่กำหนดให้ ตัว appBadge เป็น 0 แบบนี้ครับ 
&lt;code&gt;Titanium.UI.iPhone.appBadge = 0&lt;/code&gt;
&lt;br /&gt;
เป็นอย่างไรกันบ้างครับ สำหรับวันนี้ขอจบลงตรงนี้ก่อนนะครับ ใบทความต่อ ๆ จะเป็นเรื่องอะไรนั้นอย่าลืมติดตามกันต่อนะครับ&amp;nbsp;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.mobidevthai.com/feeds/4437849635955589225/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.mobidevthai.com/2012/09/app-badge-ios.html#comment-form' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/4437849635955589225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7901857616222060090/posts/default/4437849635955589225'/><link rel='alternate' type='text/html' href='http://www.mobidevthai.com/2012/09/app-badge-ios.html' title='แสดงตัวเลขบน icon app (สำหรับ ios)'/><author><name>Whatever</name><uri>http://www.blogger.com/profile/08042646819280181425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfADdaDA1jVT5BU4_pvg1X-uRTI2cGG03yKX_U_4Iz-OCgm7zVTtbzNeVW6r9f33vVclIYTduW-9q-G7eEoX-4pD_b6Zi-wcCqLH_-Wlrj4eYxKKrLzpJRUe23WacNDZrcqHjcYEPjuX4W/s72-c/badge.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>