วันนี้โค้ชพลจะมาคุยเรื่องระบบปฏิบัติการใหม่ของ Apple นั่นคือ “iOS 8” และการพัฒนาโมบายล์แอพพลิเคชั่นด้วย HTML, CSS, และ Javascript โดยใช้ PhoneGap/Cordova ใครยังไม่เคยรู้จัก PhoneGap และ Cordova ให้ไปศึกษาในวิดีโอที่โค้ชพลทำไว้ที่นี่
เอาล่ะกลับมาที่หัวข้อของเรากัน สิ่งที่คุณต้องรู้เกี่ยวกับ iOS 8 และ PhoneGap/Cordova ในปัจจุบันคือ….
- คุณจะต้องรัก iOS 8 แน่ๆ (อ่านต่อด้านล่าง) และ
- ถ้าคุณลองรันแอพ PhoneGap/Cordova บน iOS 8 SDK Beta ตอนนี้ ผมคุณร่วงแน่ๆ
1. เหตุผลที่จะหลงรัก iOS 8
บางคนเป็นสาวก Apple ก็ไม่เป็นไร แต่สาวก Android ไม่ต้องเครียดไปนะครับ โค้ชพลรักทั้ง 2 คนเหมือนเดิม (เฮ้ย?!)
เอาล่ะๆ โค้ชพลมีเหตุผลสั้นๆ 2 ข้อ เข้าใจง่ายๆ ครับ
ข้อแรก เพราะ iOS 8 มี WKWebView
ก่อนอ่านต่อ อย่าไปคิดถึง MK สุกี้นะ เพราะมันไม่ใช่!
ใครศึกษาพื้นฐานของหัวใจ PhoneGap และ Cordova ในซีรี่ยส์ของโค้ชพล จะทราบว่าแกนหลักมันใช้ WebView ที่มีให้บน Platform ต่างๆ เป็นตัวรันเว็บแอพของเรา เหมือนเครื่องยนต์ไฮบริด ใช้น้ำมันก็ได้ ใช้ไฟฟ้าก็ได้ ซึ่งใน iOS เนี่ยมันมีชื่อว่า UIWebView
ทีนี้ WKWebView มันเหมือนเครื่องยนต์รุ่นใหม่ครับ สั้นๆ คือประสิทธิภาพสูงกว่า UIWebView ดังนั้นทั้งเว็บแอพบน Mobile Safari และแอพที่เอา WKWebView ไปใช้รัน HTML เนี่ย จะเร็วขึ้นถึง 4 เท่า! (โดยประมาณ)
ย้ำอีกครั้ง ถ้า PhoneGap/Cordova เปลี่ยนไปใช้ WKWebView ของ iOS 8 แอพจะทำงานเร็วขึ้นประมาณ 4 เท่า! เท่า! เท่า!
รายละเอียดเพิ่มเติมเกี่ยวกับ WKWebView เดี๋ยวจะเขียนอธิบายพรุ่งนี้ครับ
ข้อสอง เพราะ iOS 8 มีภาษา Swift
เอาอีกล่ะ ตั้งชื่อชวนคนไทยสับสนจริงจริ๊ง ไม่ใช่รถซูซุกิ สวิฟนะครัช
มองว่ามันเป็นภาษาทางเลือกของการพัฒนาแอพ iOS นอกจากใช้ Objective-C อย่างเดียวก็ได้เอ้า
ทีนี้จุดเด่นของภาษา Swift คือมันเขียนง่ายกว่า Objective-C ครับ โค๊ซพลลองแล้วคล้ายๆ เขียน Javascript เลย คนทำเว็บจะย้ายไปเขียน Swift ก็ไม่ยากเท่าไหร่
แต่ประโยชน์จริงๆ ของภาษา Swift สำหรับคนพัฒนาแอพด้วย PhoneGap/Cordova ก็คือ เอามาใช้เขียน Plugin ครับ
เพราะเนื่องจาก Swift ถูกวางตัวว่าจะสามารถทำได้ทุกอย่างที่ Objective-C ทำได้ เพียงแต่การเขียนมันง่ายกว่า
มันก็ลงตัวที่เวลาเราต้องการ plugin ทำงานบน iOS 8 อย่างเช่น Health Kit (เกี่ยวกับข้อมูลสุขภาพ), Apple Pay (หักเงินผ่านระบบลายนิ้วมือของ Apple), หรือติดต่อกับ Apple Watch เราก็ใช้ภาษา Swift เขียนซะเลย ไม่ต้องไปเสียเวลานานเหมือน Objective-C
สนใจภาษา Swift ไปติดตาม Fan Page เรียนกันง่ายๆ สบายๆ ที่นี่
2. ปัญหาปัจจุบันระหว่าง PhoneGap/Cordova 3.5 และ iOS 8 SDK Beta
ของใหม่ก็เหมือนคู่รักที่คบกันใหม่ๆ มีงอน มีทะเลาะกันมั่ง เป็นธรรมดา!
แต่ไหนๆ ก็ไหนๆ เจ้า PhoneGap/Cordova เนี่ย มันมีปัญหาอยู่อย่างหนึงครับ มันคือ….
ปัญหาแอพรันไม่ขึ้น/แอพพัง
ตอนนี้ถ้าใครเอา XCode 6 Beta มารันแอพ PhoneGap/Cordova ด้วย iOS 8 Simulator ล่ะก็ น่าจะปวดหัวใจเหมือนกัน
เพราะพอกดให้มันทำงานปุ๊ป เด้งครับ เด้ง!
อย่าตกใจไปเลย โค้ชพลตกใจมาจนก้มไปเก็บไม่ทัน (ตึ่งโป๊ะ!)
เอาเป็นว่าปัญหานี้เกิดจากฝั่งของ iOS 8 SDK เองครับ มีการรายงานไปที่ Apache Cordova แล้ว และยืนยันแล้วว่าปัญหาถูกแก้ไขในเวอร์ชั่น Beta 6 ของ iOS 8 SDK ครับ
ใครอยากลองอยู่ก็อย่าลืมไปกดเอา iOS 8 SDK และ XCode 6 มาจากที่นี่ล่ะ
วิธีแก้ปัญหาให้ใช้ได้ไปพลางๆ
ต้องเพิ่ม javascript นี้ลงไปใน index.html ตอนที่เรียกใช้งานครับ (จาก Formstack)
// temp fix for iOS8 beta, add it after the reference to cordova.js // You don't actually require it for ios 8 beta 5 if (navigator.userAgent === undefined) { navigator.__defineGetter__('userAgent', function() { return("Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit"); }); }
วิธีแก้ปัญหาที่ดีที่สุดในตอนนี้
วิธีที่ดีที่สุดตอนนี้ก็คือ…
อย่าเพิ่งไปใช้งาน iOS 8 SDK Beta จริงๆ จังๆ เลย เพราะคำว่า Beta มันก็แปะหราอยู่ เอาแน่เอานอนกับมันไม่ได้ และเราได้รับการยืนยันมาแล้วว่าปัญหานี้จะหมดไปเมื่อ iOS 8 SDK ออกมาเป็นเวอร์ชั่นเต็ม
พร้อมทั้ง PhoneGap/Cordova เวอร์ชั่น 3.6 ก็จะรองรับ iOS 8 ดังที่กล่าวไปข้างต้นด้วยครับ (ฮูเร่!)
เรียนง่าย เข้าใจแน่นอน กับ Workshop ทำแอพ iOS และ Android ด้วย PhoneGap เวอร์ชั่นล่าสุด
ใครไม่อยากคลำทางเอาเอง มาพบ มาเจอ มาทำแอพกันจริงๆ ด้วย PhoneGap/Cordova กับโค๊ชพล 2 วัน ดูรายละเอียดได้ในหน้าหลักสูตรครับ 🙂