หลังจากเขียน Blog ไปวันก่อน "เปิดโลก Nokia X ภาค Developer (เกือบ)ทุกเรื่องที่นักพัฒนาควรรู้" ได้รับความสนใจอย่างท่วมท้นจากนักพัฒนาทั้งหลาย บางคน Port แอพฯลง Nokia Store เสร็จเรียบร้อย ไวมาก กราบบบบ
ส่วนตัวเพิ่งมีโอกาสได้ Port แอพฯเจ้ากรรมอย่าง MOLOME ลง Nokia X อย่างเป็นทางการ จนเอาขึ้น Nokia Store ไปเป็นที่เรียบร้อย ทันเวลาวางขายพอดีเป๊ะ ก็เลยขอมาจดบันทึกจากประสบการณ์จริงให้ฟังละกันว่าเป็นยังไงบ้าง
คร่าวๆ สิ่งที่ MOLOME ต้องแก้ไขมีอยู่ 2 อย่างได้แก่
(1) GCM (Push Notification) ต้องเปลี่ยนเป็น ncm
(2) In-App Billing ต้องเปลี่ยนไปใช้ nna ของโนเกียแทน
ของ MOLOME เราใช้เวลาทั้งหมดเพียง 12 ชั่วโมง ก็เป็นอันเสร็จเรียบร้อยแล้ว
รวมเป็น apk เดียวได้เลย
คำถามที่เราเฝ้าหาคำตอบและเจอคนรอบตัวถามมาเยอะเหมือนกันว่า เราสามารถรวม Source เป็นอันเดียวและทำเป็น APK เดียวได้หรือไม่?
คำตอบคือ "ได้" นะครับ ต้องชมทีม Developer ของโนเกียดังๆ เตรียม Document ไว้ดีมาก แนะนำวิธีเขียนดีๆให้กลายเป็น apk เดียวได้ ทดสอบแล้ว ใช้งานได้ไม่มีปัญหาเลย
หลักการการเขียนคือใช้วิธี try catch ได้เลย คือเรียกคำสั่งของโนเกีย หาก throw Exception ที่กำหนดมา แปลว่ามันไม่มีคำสั่งนั้่นในเครื่อง หรืออีกนัยหนึ่ง เครื่องนั้นไม่ใช่ Nokia X ให้ไปเรียกคำสั่งของ Google แทน
การ Port GCM เป็น NCM ทำได้ง่ายมาก
อย่างที่เคยเขียนไว้ใน Blog ที่แล้วว่ามันแค่เปลี่ยน namespace ก็ใช้งานได้แล้ว ส่วนฝั่ง Server ก็เหมือนกันทุกอย่าง แค่เปลี่ยน URL ที่ยิงไป ก็ใช้งานได้แล้ว
ความลำบากคงจะไปตกอยู่ฝั่ง Server มากกว่า ที่ต้องแยก Case จำให้ถูกด้วยว่าอันไหนเป็น GCM Key อันไหนเป็น NCM Key จะได้ยิง Push ไปให้ถูกที่
ตรงนี้ ของ MOLOME ใช้เวลาเพียง 2 ชั่วโมง แก้ทั้งฝั่ง Client และ Server ก็ใช้งานได้ รวมเวลาทดสอบแล้ว ไม่มีปัญหาต้องตามแก้ไขเลย
การแสดงผล Push ของ Nokia X ต่างจากแอนดรอยด์ทั่วไป
เนื่องจาก Nokia X ไม่ได้แสดงผลการ Push บน Bar ด้านบนเหมือนแอนดรอยด์ทั่วไป แต่ใช้วิธีการ "เด้งด้านบน" แทน
คราวนี้ถ้ายิง Push รัวๆ ผลก็คือมันจะเด้งจนกว่าจะหมด บางทีเนตตายแล้วกลับมา มี Push ค้างอยู่ 30 อัน มันก็เด้ง 30 อัน ต้องรอจนกว่าจะหมด
ต้อง Handle ดีๆถ้าไม่อยากให้ผู้ใช้รำคาญ
Push มี Delay
จากที่ทดสอบ Push มี Delay อยู่พอสมควร บางทีเหมือนอั้นแล้วก็ปู๊ดดดดดทีเดียว 5 ข้อความ พอไปผนวกกับเรื่องด้านบนก็ ... ย้ำอีกที ต้อง Handle ดีๆ
การ Port In-App Billing เป็น NNA ไม่ง่ายเท่าไหร่
ชุดคำสั่งของ Google IAB (In-App Billing) และ NNA เหมือนกันประมาณ 90% แต่ 10% นี่แหละที่แอบเป็นตัวปัญหานิดหน่อย
Google IAB มีคุณสมบัติว่า มันรู้ด้วยตัวมันเองว่าแอพฯนั้นๆมี Product อะไรบ้าง ไม่ต้องไปลิสต์ In-App Product ID ให้กับ API แต่กับ NNA เราต้องลิสต์ In-App Product ID ที่มีก่อน (หาได้จากหลังบ้านของ Nokia Store) ถึงจะเอาไปใช้กับ API ต่างๆได้ เช่น ถ้าเราอยากรู้ว่า User นั้นๆซื้ออะไรไปแล้วบ้าง ตัว IAB จะบอกเราได้เลยทันที ไม่ต้องส่ง Product ID ใดๆไป แต่ตัว NNA เราต้องส่ง Product ID ไปถามด้วย
น่าปวดหัวนิดหน่อยเพราะถือว่าใช้คนละ Mindset กับ IAB ต้องไปปรับเปลี่ยนโค้ดให้หาวิธีลิสต์ Product ID ทั้งหมดมาให้ได้
ถ้าใส่ Product ID ที่ไม่ได้ผูกกับแอพฯเรา API ทำงานไม่ได้ด้วยนะ ...
ตรงนี้ก็เลยใช้เวลา 10 ชั่วโมงเต็มๆ นั่งแก้ทั้ง Server และ Client เพื่อปรับ Mindset ตรงนี้ให้กับโปรแกรม สุดท้ายก็ใช้งานได้จ้า
แต่ข้อดี(ต่อการพัฒนา)ของ NNA คือ เราไม่ต้องไปอัพบน Store เพื่อทดสอบ สามารถเทสต์จาก Debug Mode ได้เลย
In-App Purchase Item ไม่สามารถใช้ Product ID เดียวกับ Google Play ได้
การจะใช้ In-App Purchase ได้ เราต้องเพิ่ม Item ไว้ในหลังบ้านของ Nokia Store ด้วย (Maintain เพิ่มอีกหนึ่งที่โดยปริยาย)
วิธีการเพิ่มไม่ยาก แค่ใส่ Name กับ Description ก็จบละ ใช้เวลาอนุมัติ ... 5 วินาที เท่าน้านนนน หรือเรียกว่าระบบอัตโนมัติก็คงได้ ไม่มีการรอจ๊ะ
แต่ข้อเศร้าอย่างนึงที่พบเจอคือเราไม่สามารถกำหนด Product ID ได้เอง ระบบจะ Gen มาให้ และเป็นตัวเลขเท่านั้น ไม่สามารถใช้ Product ID เดียวกับ Google Play ได้แน่นอน ต้องปรับ Server ให้เก็บแยกด้วย
ใช้งาน Operator Billing ได้ทันที
โคดจุดแข็งของ Nokia X Platform อยู่ที่ Operator Billing ที่สามารถตัดเงินจากซิมเพื่อใช้ซื้อของใน Store ได้ทันที
อันนี้สามารถใช้ได้กับทั้งการซื้อแอพฯจาก Store รวมถึงการซื้อ In-App Item จากในแอพฯ
NNA ไม่มีบาง Field ส่งกลับมาจาก API
อย่างที่บอก มันไม่ได้เหมือนกันซะทีเดียว หากมีการเช็คโน่นเช็คนี่ ก็ต้องไปอ่าน Document ดีๆด้วยว่ามันใช้บน Nokia X ได้หรือไม่ ยกตัวอย่างเช่น Signature ที่ไว้ตรวจว่าแอพฯถูกซื้อจริงๆหรือถูกโกง อันนี้ก็ตรวจไม่ได้ ถ้าเรียกก็ Crash เลย
NNA ไม่สนับสนุน Subscription
สำหรับคนที่ใช้โมเดล Subscription ตอนนี้ยังไม่สามารถใช้บน Nokia X ได้ด้วยวิธีใดๆจ้า
สิ่งที่ต้องเตรียมในการเอาแอพฯขึ้น Nokia Store
คร่าวๆมีดังนี้
- ชื่อแอพฯ (2-30 ตัวอักษร)
- Description (5-4000 ตัวอักษร)
- ไอคอนขนาด 512x512 พิกเซล
- Screenshots ขนาด 480x800 เป็นอย่างน้อย (มากสุด 8 อัน)
- Keyword สำหรับการค้นหา
- ข้อมูลเกี่ยวกับ Content ในแอพฯ เพื่อกำหนด Age & Rating (ใน Form บอกว่า Optional แต่ความจริง ถ้าไม่กำหนดจะ Approve ไม่ผ่าน ทำด้วย)
- ไฟล์ apk ขนาดไม่เกิน 500 Mb
- Release Note สำหรับเวอร์ชั่นนั้นๆ (5-500 ตัวอักษร)
แค่นี้ก็จะส่งแอพฯขึ้น Store ได้แล้วครับ
การ Approve แอพฯ ใช้เวลา 12 ชั่วโมง
ถือว่าทำเวลาดีมาก ส่งไปสองครั้ง แต่ละครั้งก็ใช้เวลาเพียง 12 ชั่วโมงเท่านั้นในการตรวจแอพฯ
เมื่ออนุมัติแล้ว ก็จะหาบน Nokia Store บนมือถือเจอทันที แต่จะยังเปิดจาก Web Browser บนคอมพ์ไม่ได้ ไม่ต้องตกใจ มันเจอบนมือถือแล้วแน่ๆ
สรุปแล้ว หากให้พูดสั้นๆว่ารู้สึกยังไงกับการพอร์ตครั้งนี้ คงบอกว่า "ง่ายมาก" และ "รู้สึกคุ้มค่าต่อการพอร์ต" ใครมีแอพฯก็เชียร์ให้พอร์ตลง Nokia Store ดูนะครับ ที่พูดนี่ไม่ได้อะไรจากโนเกีย แต่ผมเห็น Opportunity ใหญ่มากบน Platform นี้ ไม่อยากให้พลาดกัน
ยังไงก็ฝาก MOLOME ไว้ในอ้อมอกอ้อมใจด้วยนะคร้าบ ใครถือครอง Nokia X อยู่ ก็โหลดมาเล่นกันได้เลยจ้า มั๊วะะะะ =)
ไว้ใครไปงานเปิดตัว Nokia X เจอกันครับ มีคิวขึ้นไปเดินแบบนิดๆหน่อยๆ ^_^