วันพุธที่ 21 พฤศจิกายน พ.ศ. 2555

XCode 4 Tutorial Playing Videos



Playing Videos

In this tutorial i will be showing you how to play video files in your apps
Features:
  • 1 Round Rect Button 
  • 1 Video Files

Playing videos in your application can give so much more information than a standard pages of text take youtube for example users are able to share and express information in a way a written page cannot 



ViewController.h

#import <MediaPlayer/MediaPlayer.h>
@interface ViewController :UIViewController {
}
-(IBAction)playvideo;
@end


ViewController.m

@implementation ViewController
-(IBAction)playvideo {
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
    pathForResource:@"Video1" ofType:@"mp4"]];
MPMoviePlayerViewController *playercontroller = [[MPMoviePlayerViewController alloc]
    initWithContentURL:url];
    [self presentMoviePlayerViewControllerAnimated:playercontroller];
    playercontroller.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
    [playercontroller.moviePlayer play];
    [playercontroller release];
    playercontroller = nil;
}
@end

วันศุกร์ที่ 9 พฤศจิกายน พ.ศ. 2555

iPhone Programming – Begin


บทความนี้เขียนโดยสมมติว่าคุณรู้เรื่อง Cocoa มาบ้าง
เอาละ ไหนๆ ก็รับปากว่าจะเขียน iPhone Tutorial ไปแล้ว จะเบี้ยวก็กะไร ก่อนอื่นก็บอกก่อนว่า โปรแกรมแรกที่เราจะเขียนนั้นคือ โปรแกรม นับจำนวนตัวอักษร ( คุ้นๆม่ะ ) มันก็โปรแกรม แรกที่ได้เขียน cocoa นั่นเหละ แต่วันนี้เราจะมาลองเขียนสำหรับ iPhone กัน ต้องขอออกตัวก่อนเลยนะครับว่า นี่เป็นการเขียน แบบทดลองเขียน สำหรับตัวผมเองก็เพิ่งจะเริ่มศึกษาเหมือนกัน แต่คิดว่า มันน่าจะเป็น Tutorial ทำให้คนที่ยังไม่รู้จะเริ่มยังไง พอจะจับทิศทางได้ว่า จะศึกษาอะไรก่อน
เอาละก่อนอื่น สำหรับคนที่ไม่รู้เรื่อง Cocoa มาก่อนแนะนำว่า ควรไปศึกษามาก่อน
เพื่อเป็นการไม่เสียเวลา มาเริ่มกันเลย

First Step

ก่อนอื่นก็เปิดโปรแกรม XCode ขึ้นมาแล้วก็สร้างโปรเจค Cocoa Touch Application ดังรูป
ก็เหมือนๆกับ สร้าง Cocoa Application นั่นเหละครับ โดยในตัวอย่างผมตั้งชื่อว่า iPhoneStringCount
หลังจากนั้นก็จะเห็น File หลายๆไฟล์ ก็จะแบ่งออกง่ายๆ เป็น
  1. iPhoneStringCountAppDelegate
  2. iPhoneStringCountViewController
และก็จะเห็นว่ามี xib  ไฟล์ 2 Files นั่นคือ
  1. MainMenu.xib และ
  2. iPhoneStringCountViewController.xib
คำถามคือว่า 2 xib นี้มันต่างกันยังไง ?
ก็ง่ายๆเลยครับคือว่า MainMenu.xib ก็คือ ตัวหลักของ interface หลักของโปรแกรม เป็นตัวจัดการ view ย่อยๆที่อยู่ในโปรแกรมของเรา ถ้าเปิดมาดูจะเห็น Object ต่างๆในรูป
ซึ่งจะเห็นว่ามี UIViewController ที่ชื่อว่า “iPhone String Count View Controller” ก็สรุปว่า MainMenu.xib  นี้ก็ไม่ต้องไปแก้ไขอะไร
สิ่งที่เราจะออกแบบก็คือ view ย่อยๆนั่นเอง ซึ่งในโปรเจคนี้ก็คือ iPhoneStringCountViewController.xib ก็เปิดไฟล์นี้ขึ้นมา ก็จะเห็นหน้าตา interface builder แบบนี้
หลังจากนั้นก็ออกแบบหน้าตาโปรแกรมกัน โดย double click ไปที่ view หลังจากนั้นก็ละเลง โดยหน้าตาของโปรแกรมเราก็ไม่ได้มีอะไรมาก interface ประกอบไปด้วย
  • UITextField เพื่อเป็นส่วนของ input
  • UILable เป็นส่วน output ของโปรแกรม
  • และปุ่ม UIButton อีก 1 ปุ่ม
และแล้วหน้าตาของโปรแกรม ก็จะออกมาแบบนี้

AppController Class

ถ้ายังพอจะจำ Cocoa Programming ได้จะเห็นว่าเกือบจะทุกครั้ง เราจะทำการ สร้าง Class ที่ชื่อว่า AppController เพื่อเอาไว้จัดการ interface โดยเราจะประกาศ member ที่เป็น outlet ไว้ที่ class นี้  แต่ครั้งนี้เราไม่ต้องเพิ่ม AppController เข้าไปเพราะว่า เราได้มี Class ที่ทำหน้าที่เหมือน AppController อยู่แล้ว นั่นก็คือ iPhoneStringCountViewController ( ส่วน คลาส AppDelegate นี้เป็นตัวจัดการกับ view ย่อยๆ แต่ในโปรแกรมนี้เรามีแค่ 1 view ฉนั้นเราก็ไม่ต้องไปทำอะไรกับมัน )
ก็เหมือนๆกับ การเขียน Cocoa ปกติเราต้องประกาศ  member ที่เป็น outlet เพื่อเอาไว้เชื่อมกับ interface ที่ได้ออกแบบไว้ และก็ต้องมี method ที่เป็น action สำหรับ button ที่เราได้ทำไว้
งั้นเราประกาศ member ที่ชื่อว่า m_textInput เพื่อเป็นส่วนของ input และ m_textOutput เพื่อเป็นส่วนของ output ของโปรแกรม และเราก็มี method ที่ชื่อว่า countString เพื่อจะเป็น action สำหรับการกดปุ่ม
เราก็เปิด file iPhoneStringCountViewController.m และก็เขียนได้แบบนี้ครับ
@interface iPhoneStringCountViewController : UIViewController
{
 IBOutlet UITextField *m_textInput;
 IBOutlet UILabel *m_textOutput;
}
 
- (IBAction) countString:(id) sender;
 
@end
ก็เป็นว่าตอนนี้เราก็ได้ เขียน class เรียบร้อยแล้ว งั้นขั้นตอนต่อไปก็คือ การเชื่อมกับ Interface ที่ได้ออกแบบไว้

Back to Interface Builder

ก็หลังจากแก้ไข class แล้วต่อไปก็คือทำให้มันเชื่อมต่อกับ interface วิธีการก็ไม่ได้ยาก ทำเหมือน Cocoa ดั้งเดิมทุกประการ ถ้ายังจำ Cocoa Tutorial แรกได้ผมจะเพ่ิม Object เข้ามา นั่นก็คือ Instance ของ AppController แต่สำหรับ ครั้งนี้เราไม่ต้องไปเพิ่มเข้ามาเพราะว่า File’s Owner นั้นก็เป็น Instance ของ ViewController อยู่แล้ว ฉนั้นแล้วเราก็ Click ขวาที่ File’s Owner เลยครับจะเห็น panel ดังรูป
จะเห็นว่ามี Outlet ที่ชื่อว่า m_textInput และ m_textOutput อยู่แล้ว หลังจากนั้นเราก็ลากไปเชื่อมกับ interface ดังรูป
และขั้นตอนต่อไปเราก็เชื่อม button ของเรากับ action ที่เราได้ประกาศไว้นั่นก็คือ countString ก็คือลาก กด ctrl ค้างที่ ปุ่มแล้วก็ลากมาดังรูป
ก็จะเห็นว่ามี Panel ขึ้นมา ก็เลือก countString
ก็เป็นอันเสร็จในส่วนของ การเชื่อมระหว่าง Interface กับ Outlet

Implement

และส่วนสุดท้ายก็คือการเขียน Implement นั่นเอง ก็ไม่ได้มีอะไรมาก เราก็ทำการ รับ input มาจาก UITextField และก็นับจำนวนสตริง หลังจากนั้นก็ แสดงมาที่ UILable สำหรับ Code ก็เปิด File ที่ชื่อว่า iPhoneStringCountViewController.m  แล้วก็เขียน countString ลงไป แบบนี้
- (IBAction) countString:(id) sender
{
 int count = 0;
 NSString *text = [m_textInput text];
 count = [text length];
 [m_textOutput setText:[NSString stringWithFormat:@"String Length: %i",count] ];
 
}
เพียงเท่านี้ก็เป็นอันเสร็จ เรามาลอง Compile และ Run ดูครับ ก็จะได้โปรแกรมหน้าตาแบบนี้ ก็ลองพิมพ์และลองกด click me ก็จะได้ผลลัพธ์ออกมา

iPhone Programming – Road map


Language

การเขียนโปรแกรมบน iPhone นั้นแบ่งภาษาที่ใช้ในการเขียนหลักๆเป็น 3 ภาษา ( จริงๆมีอีกภาษาคือ objective-c++)
  • Objective C
  • C
  • C#
ภาษาอื่นๆหมดสิทธ์ อาจจะมีภาษาอื่นในอนาคต อย่างกรณีภาษา C# ทาง Apple ไม่ได้สนับสนุนโดยตรงแต่เกิดขึ้นมาจาก Mono-Project ถ้าหากเขียน java หรือ Visual Basic มาก่อน ก็คงต้องเลือกเอาละครับว่า ต้องเรียนรู้ภาษาใดภาษาหนึ่งเพิ่มเติมแน่นอน
แนะนำข้อดีของแต่ละอันดีกว่าว่ามันมีดีต่างกันยังไง
ภาษา C
ข้อดีของภาษา C ที่ผมเห็นว่ามันดีที่สุดคือ  การหาหนังสือเกี่ยวกับการเขียนโปรแกรมภาษา C ง่ายมาก หนังสือภาษาไทยก็มี เดินเข้าร้านหนังสือก็เจอแล้ว ( แต่ไม่ค่อยมีหนังสือภาษาไทยที่ลงลึกการเขียนโปรแกรมด้วย C สักเท่าไหร่ ) และไม่ใช่แค่หนังสือแต่รวมไปถึง source code, library, tutorial และมี community ที่ใหญ่มาก และมันเป็นภาษาที่นิยมแพร่หลายและเก่าแก่ และในปัจจุบันก็ยังนิยมใช้อยู่
ข้อเสียที่ผมคิดว่ามันน่าจะเป็นเรื่องของ การเขียนโปรแกรมด้วยภาษา C ให้ได้ดีนั้นค่อนข้างยาก ไม่ใช่ว่าภาษามันไม่ดี แต่เป็นเพราะว่าตัวภาษามันค่อนข้างจะมีรายละเอียดปลีกย่อยเยอะ กว่าจะเก่งใช้เวลาเรียนรู้นาน แต่ด้วยความสามารถของตัวภาษา มันสามารถลงลึกถึงขั้นจัดการหน่วยความจำหรือแม้กระทั่งตัว hardware โดยตรงได้ และนี่ก็เป็นดาบสองคม เพราะถ้าเขียนโปรแกรมให้มันจัดการหน่วยความจำไม่ดี โปรแกรมเราก็ทำงานได้ประสิทธิภาพที่แย่มากๆ และหนำซ้ำอาจจะไปทำให้ระบบรวนอีก ( สำหรับภาษา java หรืออื่นๆนั้น แทบจะไม่ต้องไปทำเขียนอะไรเกี่ยวกับหน่วยความจำเลย เพราะมันมี Garbage collector เอาไว้จัดการหน่วยความจำให้เรียบร้อย )
จริงๆแล้วการเขียนโปรแกรมด้วย ภาษา C นั้นจำเป็นต้องเพิ่งภาษา  Objective-C อยู่ดีเพราะเราต้องอาศัย interface builder แต่อย่างที่ผมบอกไว้ว่า Library ของภาษา C นั้นมีเยอะมาก เราสามารถนำ Library ของภาษาที่มีอยู่แล้วนำมาใช้ร่วมกันกับ ภาษา Objective-C ได้อย่างไม่มีปัญหา
สำหรับโปรแกรมที่ใช้ภาษา C เป็นหลักก็จำพวก Game ครับ
ภาษา Objective-C
ข้อดีของมันคือ ภาษา objective-c มันค่อนข้างเรียนรู้ง่าย ไม่ซับซ้อน ( เค้าบอกว่ามันเป็นเหมือนภาษา C ผสมกับ smalltalk ) และมี Framework, Library ให้ใช้เยอะมาก ภาษามีความยืนหยุ่นสูง และเนื่องจากว่ามันเป็น small super set of C นั่นก็แปลว่า เราสามารถใช้ lib หรือ code ของ C ได้ ( ไม่ใช่ C++ น่ะ ) และตัวภาษายังอนุญาติให้เราเข้าไปจัดการหน่วยความจำได้เหมือนกัน แต่ก็ไม่ยืดหยุ่นมากเท่ากับ c และมันยังมี Garbage Collector ในกรณีที่ไม่ต้องการจัดการหน่วยความจำเอง (แต่ในกรณีของ iPhone Garbage Collector จะไม่สามารถใช้ได้) และข้อดีที่สุดคือ การเขียน application บน iPhone นั้น ถ้าเขียนด้วยภาษา objective-c คือมันมี interface builder ทำให้เราออกแบบ User Interface ได้อย่างง่ายดาย
ข้อเสียคือ หนังสือให้อ่านน้อยมาก *** ย้ำว่าน้อยมาก *** หนังสือภาษาไทยตอนนี้เท่าที่เห็นมีเล่มเดียวคือ iPhone Programming Cook Book และจำนวนแหล่งความรู้เพิ่มเติมของ Objective-C นี้ก็น้อยมาก ติดปัญหาก็ไม่รู้จะไปหาคำตอบได้ที่ไหน อย่างเวปของไทย ที่เกี่ยวกับ Objective-C ก็น้อยมากๆ เทียบกับ .net หรือ java ก็คนละเรื่องเลย ( บางคนอาจะไม่เคยได้ยินชื่อภาษา Objective-C มาก่อนด้วยซ้ำไป ) จากสิ่งนี้ทำให้ การหา source , tutorial นั้นยากตามไปด้วย ต้องหาคำตอบหรือความรู้เพิ่มจากเวปของต่างประเทศค่อนข้างเยอะ คนไม่เก่งภาษาอังกฤษ ก็ลำบากหน่อย
ภาษา C#
ในความคิดส่วนตัวของผมคิดว่า C# เป็นภาษาที่ควรจะพิจารณาเป็นลำดับสุดท้าย เพราะเนื่องด้วยว่า Apple ไม่ได้สนับสนุนโดยตรง และการเขียน iPhone ด้วย C# นั้นต้องการ IDE ของ mono-project ซึ่งต้องซื้อเพิ่มเติม ราคาก็บาทอยู่เหมือนกัน ที่สำคัญครับยังต้องเขียนบน mac และอาศัย iPhone SDK อยู่ดี เหมาะสำหรับ โปรแกรมที่มีอยู่แล้วใน platform อื่นที่เขียนเป็น C# อยู่แล้วมากกว่า ถ้าใครสนใจจริงๆ ก็ไปอ่านรายละเอียดเพิ่มเติมได้ที่่ http://monotouch.net/
ส่วนเรื่องอื่นๆในรายละเอียดของภาษาว่าแตกต่างกันอย่างไรในแบบลึกๆ ลองไปดูเพิ่มเติมได้ที่
แล้วควรจะเลือกภาษาใด ?
จากประสบการณ์ของผมขอแนะนำให้ศึกษา ภาษา Objective-C เป็นภาษาหลักส่วนภาษาอื่นๆเป็นภาษารอง

Framework

apple ได้ออกแบบ Framework มาเป็น 2 อย่างคือ
  • Cocoa
  • Carbon
สองอย่างนี้ มันสามารถทำงานร่วมกันได้ในบางส่วน แต่โดยปกติแล้วจะแยกจากกัน สำหรับการเขียนโปรแกรมบน Mac นั้น ถ้าเขียนโปรแกรมด้วยภาษา objective-c นั้นเราจะใช้ Cocoa ส่วน C/C++ นั้นจะใช้ Carbon ดังนั้นถ้าหากเลือกได้ว่าจะเขียน ด้วยภาษาใดแล้วมันก็เหมือนเป็นการบังคับไปเลยว่า เราต้องใช้ Framework แบบไหน แต่ข้อดีของมันก็คือว่า ทั้ง Cocoa และ Carbon ออกแบบมาใกล้เคียงกันมาก ยกตัวอย่าง NSView ( เป็นคลาสหนึ่งใน Cocoa ) ในส่วนของ Carbon ก็จะมีคลาสที่คล้ายๆกันคือ HIView และมี method ที่คล้ายๆกันอีกต่างหาก ( แต่ concept การทำงานบางอย่างมันจะไม่เหมือนกันซะทีเดียว )
แต่สำหรับ iPhone แล้ว Apple ได้ออกแบบ Framwork ใหม่ที่มีชื่อว่า
  • Cocoa Touch
ซึ่งเป็น Framework ที่ออกแบบมาเหมือนกับ Cocoa แต่มีขนาดเล็กกว่า ฉนั้นแล้วการเขียนโปรแกรมด้วย iPhone นั้นก็ต้องใช้ Cocoa Touch ครับ เว้นแต่ว่าจะเขียนโปรแกรมจำพวก Game อาจจะไม่จำเป็นต้องศึกษาให้ลึกซึ้งมากนัก

Tools

เครื่องมือที่ใช้ในการเขียนโปรแกรมสำหรับ iPhone นั้นมีสองอย่างคือ XCode และ monotouch สำหรับ C# ในส่วนของ Development Tool  ของ Apple เองนั้นจะประกอบไปด้วยส่วนย่อยๆอีก หลายอัน เช่น Simulator , Instrument
Xcode นั้นเป็นโปรแกรมที่แถมมาฟรีกับ Mac OSX โดยปกติจะอยู่ในแผ่นที่แถมมาตอนซื้อเครื่องในแผ่นที่ 2 ถ้าไม่มีก็โหลดได้จากเวปของ apple แต่ต้องสมัครเป็นสมาชิก adc member ก่อน และในตอนนี้ XCode ก็ออกมาเป็น version 3.1 แล้ว ถ้าหากเป็น Snow Leopard ก็จะเป็น 3.2

Ready ?

หลังจากรู้คร่าวๆไปแล้ว ว่าการที่เราจะเขียนโปรแกรมบน iPhone นั้นมีขั้นตอน และต้องรู้อะไรมาบ้าง แน่นอนว่าบางคนอาจจะต้องเรียนรู้ทุกอย่างใหม่หมด ตั้งแต่ ภาษา เครื่องมือ ในการเขียนโปรแกรม แต่อย่าไปกลัว เมื่อก่อนผมเองก็ยังไม่เคยเขียนโปรแกรมบน mac มาก่อนเลย ก็ยังอ่านและทดลองเองหมด ฉนั้นไม่ยากเกินความสามารถแน่ๆ
สรุปว่า ถ้าอยากเขียนโปรแกรมบน iPhone สิ่งที่จะต้องรู้ก็คือ
  • ภาษา c หรือ objective-c หรือ C# ( แต่ผมไม่แนะนำ )
  • Cocoa Touch
  • XCode
  • Interface Builder
ครั้งหน้าเราจะมาเริ่มเขียนโปรแกรมกันครับ

วันพฤหัสบดีที่ 8 พฤศจิกายน พ.ศ. 2555

การ เขียน App ios UITabBar, UITabBarController


UITabBar, UITabBarController

Key Skills & Concepts
● ทำความเข้าใจเกี่ยวกับ tab bars
● การสร้างแอพลิเคชันแบบ tab bar Application
● การเพิ่ม tabs ให้กับ tab bar
● การปรับแต่ง tab bar
การแสดงผลสำหรับแอพลิเคชันของ iPhone ที่มีลักษณะที่ให้ผู้ใช้เลือกแถบแสดงผล หลังจากนั้นแถบที่ถูกเลือกจะโหลด view ขึ้นมาแสดงผล เนื้อหาที่จะพูดถึงในต่อจากนี้คือการใช้งาน tab bar การสร้างแอพลิเคชันด้วย tab bar และการปรับแต่งแต่ละ tab bar
UITabBar, UITabBarController, UITabBarItem,
และ UITabBarControllerDelegate
แอพลิเคชันแบบ tab bar เป็นตัวที่นิยมใช้ในการแสดงผลแบบการทำงานย่อยๆ ที่สามารถแยกการทำงานออกเป็บหลายๆ แบบที่แตกต่างกัน
การสร้าง Tab Bar Application
การสร้าง Tab Bar Application สามารถทำได้ง่ายกว่าการสร้างแอพลิเคชันแบบ View-based ที่เคยสร้างก่อนหน้านี้ แอพลิเคชันที่จะสร้างขึ้นต่อไปนี้สร้างด้วย Tab Bar Application template และเราจะเพิ่ม Tab ที่สามเข้าไปในแอพลิเคชัน

1. สร้างโปรเจกต์เลือก Tab Bar Application และตั้งชื่อโปรเจกต์ TabBarExOne.
2. เปิดส่วนของ Classes และ Resource เราจะเห็นไฟล์ที่สร้างขึ้นมาเช่นเดียวกับ แอพลิเคชันแบบ View-based
3. เปิดไฟล์ TabBarExOneAppDelegate.h เราจะเห็นการใช้งาน UITabBarControllerDelegate protocol โดยการกำหนด UITabBarController property เป็น IBOutlet
  1. #import <UIKit/UIKit.h>
  2.  
  3. @interface TabBarExOneAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {
  4.     UIWindow *window;
  5.     UITabBarController *tabBarController;
  6. }
  7.  
  8. @property (nonatomic, retain) IBOutlet UIWindow *window;
  9. @property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
  10.  
  11. @end
4. เปิดไฟล์ MainWindow.xib และดูในส่วนของ document window เราจะเห็น Tab Bar Controller
5. โปรเจกต์ที่สร้างขั้นมีการเพิ่มส่วน TabBarExOneAppDelegate เป็น proxy object ไปยัง MainView.xib
6. ในหน้าต่าง document window ภายใต้ Tab Bar Controller เราจะเห็นว่ามี View Controller อยู่ 2 อันคือ First และ Second
7. Build and run the application

UIApplication and UIApplicationDelegate


UIApplication and UIApplicationDelegate

ทุกๆ โปรแกรมของ iPhone จะมี UIApplication เพียงตัวเดียว หน้าที่ของ UIApplication คือจุดเริ่มต้นการทำงานของโปรแกรม จะทำหน้าที่กำหนดค่าเริ่มต้นต่างๆ ของโปรแกรมและแสดงผลหน้าต่าง Window ของโปรแกรม เช่นการโหลด UIView อันแรกให้แสดงผลใน UIWindow หน้าที่เพิ่มเติมอย่างอื่นคือจัดการการทำงานของโปรแกรม และตอบสนองการทำงานของโปรแกรม ซึ่งการทำงานของโปรแกรมโดยทั่วไปมักจะเกิดจาก event เมื่อมี event เกิดขึ้น UIApplication จะรับ event ที่เกิดขึ้นและจะมี UIApplicationDelegate เป็นตัวคอยดูแลจัดการ event ให้
UIApplicationDelegate จะทำหน้าที่จัดการ event ทั้งหมดที่เกิดขึ้นในโปรแกรม รวมถึง event ที่เกิดขึ้นจากระบบ เช่น startup, shutdown, incoming call และ calendar alert
ก่อนที่จะพูดถึงรายระเอียด เพื่อความเข้าใจเกี่ยวกับ UIApplication และ UIApplicationDelegate มีโปรแกรมสำหรับทดสอบการทำงานของ UIApplication และ UIApplicationDelegate โปรเจกต์นี้สร้างจากแบบ Window-based Application ซึ่งจะเป็นโปรเจกต์แบบเปล่าๆ แล้วจึงเพิ่มส่วนของ UIView ลงไป

วันพุธที่ 25 เมษายน พ.ศ. 2555

เขียนโปรแกรมขายบน iPad ตอนที่ 2 : ศึกษาและศึกษา!


เขียนโปรแกรมขายบน iPad ตอนที่ 2 : ศึกษาและศึกษา! 




บทความในตอนที่แล้ว ผมพูดเกี่ยวกับว่าในเบื้องต้น เราจะต้องเตรียมอะไรบ้างทั้งอุปกรณ์และ software สำหรับพัฒนา วันนี้ผมจะมาพูดถึงความคืบหน้าต่อไปในการทำความเข้าใจกับ XCode และเครื่องมือที่ใช้พัฒนาครับ

1) เราจะศึกษาหาความรู้เกี่ยวกับภาษาสำหรับพัฒนา app บน iPad ได้จากไหน

สำหรับคนที่ได้สั่งซื้อตัว Apple Developer Enrollment Program ไปแล้ว แต่ยังรอทางโน้น activate ให้อยู่ ( นี่ผมสามวันแล้วยังไม่ได้ ไม่รู้ว่าเมื่อไหร่จะได้ใช้ตัว XCode 4 ) ระหว่างรอก็สามารถล๊อกอินเข้าไปในส่วนของ member zone ได้ครับ ในส่วนนี้จะมีข้อมูลต่างๆ ที่เป็นประโยชน์มากมาย ทั้งวีดีโอและตัวอย่างโค้ด โดยผมอยากให้มานั่งฟังวีดีโอต่างๆ ที่ทาง apple แนะนำครับ เพื่อให้เห็นภาพรวมของโครงสร้างภาษา และเครื่องมือต่างๆ สำหรับการพัฒนาโปรแกรมบน iOS โดย video ที่ผมแนะนำจะอยู่ในหมวด Developer Essential Videos -> iPhone Development Tool Overview ลองดูอันนี้ก่อนก็ได้ครับเพื่อให้เห็นภาพรวมของการพัฒนาโปรแกรมบน iOS. แต่ว่าจะเป็นข้อมูลของ XCode 3 นะครับ แต่ก็พอหยวนๆ ฟังๆ ไปก่อนได้ครับ
จากที่ได้ลองฟังและลองพยายามเขียนโค้ดตามวีดีโออันที่ผมแนะนำ ( ซึ่งทำแทบตาย แต่ก็รันไม่ออก ไม่รู้ทำไม ) ขอสรุปประเด็นสำคัญๆ ที่ควรรู้ดังนี้นะครับ
1.1) ถ้าคุณจะทดสอบบนเครื่อง iPhone หรือ iPad จะต้องขอ Certificate สำหรับเครื่องนั้นๆ เสียก่อน โดยส่งตัว serial key ของเครื่องไปที่ apple และ apple ก็จะส่งตัว certificate มาให้เราครับ โดยตัวนี้จะเป็นตัวระบุว่า เครื่องไหนบ้างที่มันผูกกับเราอยู่ ซึ่งถ้าไม่ขอ จะ Deploy โปรแกรมไปทดสอบบนเครื่องไม่ได้นะครับ ( ดู..มัน…เอาทุกอย่างพี่แอปเปิ้ล ) ดังนั้น ถ้าจะลักไก่ทดสอบบน simulator อย่างเดียวก็ไม่ได้แน่นอนครับ เพราะ Environment คนละแบบ และก็เป็นข้อสรุปด้วยว่า ต้องใช้ Mac ในการพัฒนาเท่านั้น ใช้ PC ลง VMWare ไม่ได้….ก็เอาเป็นว่า คุณต้องซื้อเครื่อง Mac 1 เครื่อง และ iPhone หรือ iPad 1 เครื่องเป็นอย่างน้อย เพื่อพัฒนาโปรแกรมสำหรับ iOS คร้าบบบ…
1.2) ตัวภาษา Objective-C โครงสร้างมันดูมึนๆ ยิ่งสำหรับผมที่เขียนแต่ php มาแทบทั้งชีวิต เจอเอาไปนี่ถึงกะงง..มาก แต่คนที่เคยเขียน Java มาน่าจะได้เปรียบมั้ง…เพราะมันเป็นภาษาพวก OO เหมือนกันน่ะ
1.3) ตัว XCode จะมี Framework สำเร็จรูปมาให้เยอะมาก ซึ่งจะช่วยประหยัดเวลาเราไปได้เยอะครับ บางโปรแกรมเช่นโปรแกรมเล่นเว็บนี้เขียนง่ายสุดๆ เพราะมันมีตัว Web View มาให้แล้ว เอาไปวางๆ และลิ้งค์ๆ ก็ใช้ได้ แต่ผมก็ยังไม่ค่อยเข้าใจคอนเซ็บอยู่ดี คงต้องลองเขียนเล่นดูอีกสักพัก…ใหญ่
ผมก็เพิ่งดูวีดีโอไปได้สองสามตอน ( ตอนละชั่วโมง ) ก็ยังบ้อแบ้อยู่เหมือนกันครับ ยังต้องดูกะลองทำไปด้วย อีกพักใหญ่ ( ดูอย่างเดียวแล้วหลับ ) ถ้าใครมี iPad sync เอาไปนอนดูก็ได้นะครับ สะดวกดี แต่ก็แนะนำว่าให้ลองทำไปด้วยจะดีกว่า เพราะจะได้เห็นภาพและไม่ง่วงด้วยครับ

2) Next Step

ตอนนี้ผมก็ยังได้แต่รอตัว activation code ต่อไป แต่ถึงได้มาก็ยังทำอะไรไม่ได้อยู่ดี แหะๆ วันก่อนผมไปอ่านสกูปจากไหนมาสักที่ เห็นว่าทาง appstore สอยโปรแกรมร่วงไปก็เยอะเหมือนกัน ผมก็เลยมาสงสัยในเรื่องของกฏระเบียบของการส่งโปรแกรมไปรีวิว ซึ่งถ้าได้ความยังไงจะมาเขียนเล่าสู่กันฟังแล้วกันนะครับ เพราะถ้ากฏมันแรง จะได้ระมัดระวังเรื่องการออกแบบโปรแกรมไม่ให้ไปขัดกฏ ไม่งั้นทำแทบตายโดนสอยร่วงก็ชีช้ำระกำใจ เหอๆ
แล้วพบกันใหม่เร็วๆ นี้ครับ

Tip การเขียน App บน iOS


ห่างหายไปนานเลยสำหรับบทความเกี่ยวกับการเขียนแอปนะครับ เพราะคนเขียนมัวแต่ไปเล่นเกมอยู่…แฮ่ๆ นานจน iMac ที่ซื้อมาผ่อนหมดไปแล้วเนี่ย ยังไม่ได้เริ่มเขียนซักกะแอป แต่ว่า ผมก็ไม่ได้นั่งๆ นอนๆ เล่นเกมอย่างเดียวนะครับ เล่นไปก็พยายามดูว่าอะไรที่ทำให้เกมนั้นๆ ประสบความสำเร็จและอะไรที่ทำให้เกมนั้นๆ ไม่ติดอันดับใดๆ เลย ซึ่งวันนี้ผมจะมาเล่า Tip ที่ผมเจอมาจากการเล่นแอปต่างๆ นะครับ ส่วนใหญ่มาจากความรู้สึกล้วนๆ อาจจะไม่ถูกต้อง 100% แต่เอาไว้เป็นไอเดียก็น่าจะดีครับ

Free App + in app purchase หรือ Paid App ดี?

หลายๆ คนที่จะเริ่มเขียน app สักตัวก็จะเริ่มคิดว่า..เราจะหาตังได้จากไหนดีนะ เพราะทุกคนก็อยากได้ตังกันทั้งนั้น โดยการจะได้เงินจากการขาย app ก็มีสองแบบตามที่จั่วหัวไว้ แล้วเราจะใช้แบบไหนดีล่ะที่มันจะเหมาะกับ App ของเรา? ผมจะขอเล่าจากที่ผมได้สังเกตุมาแล้วกันครับ

Case 1 : Free App + in-app purchase เพื่อปลดล๊อค content

การปล่อยเกมของเราออกไปเป็น Free App นั้น..ในภาพแรกเหมือนจะดี แต่พอมองลึกๆ แล้วกลับเป็นการทำร้ายเกมของเราครับ เพราะเกมที่เราอุตสาห์เขียนขึ้นมามันจะไปอยู่ใน list ของ “Free App” ทางด้านขวาของ top chart page ใน app store รวมถึงโปรแกรมพวก review price ต่างๆ ด้วยเช่น AppShopper
พอเกมเราไปอยู่ใน List ของฟรี หมายความว่าเราก็ต้องไปสู้กับคู่แข่งที่เป็นของฟรีเยอะแยะไปหมดด้วยครับ และเกมของเราก็จะดูด้อยค่าลง เหมือนกับเป็นของแจกฟรี คนก็จะไม่โหลดกันไปเล่นถึงแม้มันจะฟรีก็เหอะ ( เดี๋ยวนี้แอปมันเยอะจริงๆ ครับ ของฟรียังจะไม่อยากโหลดเล้ยยย เพราะเคยโหลดมาแล้วมันก็กากซะเยอะ )
ดังนั้น ถึงแม้เกมเราจะดีเทพขนาดไหน แต่การให้คนเล่นไปสัก 5-10 lv แล้วก็ขึ้นมาว่า ถ้าอยากเล่นต่อ ก็จงซื้อ in-app purchase ซะเพื่อปลดล๊อค.. ผมว่าคนส่วนใหญ่ไม่ค่อยอยากจะซื้อกันนะครับ ผมเองก็คนนึงล่ะที่ไม่อยากซื้อ สู้ไปซื้อแอปเสียตังตอนมันลดราคาหรือให้โหลดฟรีเลยจะดีกว่า :D
แต่ in-app purchase เพื่อปลดล๊อคก็ไม่ใช่ว่าจะไม่ดีซะทุกเคสนะครับ มีเคส App อ่านการ์ตูนของเพื่อนผม ( MangaStorm ) เป็น Free App และ ก็ใช้ in-app purchase เพื่อ unlock เหมือนกัน แต่ว่าการปลดล๊อคของเขาจะเป็นการทำให้เราสามารถโหลดการ์ตูนมาเก็บที่เครื่องได้ไม่จำกัด ซึ่งถ้ายังไม่ unlock จะโหลดมาได้แค่ 3 เรื่องเรื่องละไม่กี่ตอนเท่านั้นครับ เห็นได้ว่าวิธีนี้จะเจาะได้ตรงจุดกว่าเพราะตอบโจทย์ความต้องการของผู้ใช้ได้พอดี ไม่เหมือนกับเกมตรงที่มันเยอะไปหมด ถ้าไม่ดีจริงก็เกิดยากแล้วครับ

Case 2 : Free App Lite + Paid App

การออก version lite มาก็เป็นการดีอย่างเพราะจะทำให้ผู้ใช้สามารถลองเล่นดูก่อนได้ว่า app ของเราดีแค่ไหนก่อนที่จะตัดสินใจซื้อ ซึ่งการออก lite version ก็จะมีข้อเสียสำหรับ dev ก็คือต้อง maintain 2 version ซึ่งก็จะทำให้เสียเวลาและอาจจะเกิดข้อผิดพลาดได้มากขึ้น
แต่สมัยนี้ผมสังเกตว่า ไม่ค่อยมี app lite version อยู่ในท้องตลาดเท่าไหร่นัก ซึ่งก็อาจจะเป็นได้ว่านักพัฒนาได้ใช้วิธีแรกกันไปหมด? lol

Case 3 : Paid App + in-app purchase for item/gold

หลังๆ ผมว่าคนหันมาทำแนวนี้กันเยอะมากครับ คือทำเป็นเกมที่เสียตังซื้อกันไปเลยทีเดียว นอกนั้นยังไม่พอ ยังปล่อยให้คนซื้อของในเกมที่จะช่วยให้เราเทพขึ้นได้อีก! ตอนแรกผมก็คิดว่าใครจะมาซื้อวะ แต่หลังจากที่เล่นๆ ไปก็ถึงบางอ้อว่า อ๋ออ! พวกเด็กๆ ที่เล่นเครื่องของพ่อแม่ไงที่จะกดซื้อของแบบไม่คิด อาจจะดูเป็นเรื่องโง่ๆ แต่ผมว่าถ้า app เราคนโหลดเยอะมาก มีเด็กเปรตพวกนี้สัก 1% ก็ได้กำไรเพิ่มอีกโขเลยครับ
ข้อดีของ paid app อีกอย่างก็คือ app ของเราจะดูดีมีชาติตระกูลขึ้นครับ แถมเวลาที่มีเทศกาลต่างๆ เราสามารถที่จะลดราคา app ของเราได้อีก เพื่อกระตุ้นยอดการโหลด ( เวลาเราเปลี่ยนราคา app พวก AppShopper มันจะขึ้นมาได้ครับว่ามีแอปไหนบ้างที่ราคาเปลี่ยน ) แต่ก็อย่าเผลอตั้งราคาแค่ 0.99$ แล้วกันนะครับ เดี๋ยวเวลาจะลดดันจะต้องเป็นแจกฟรีซะนี่ 555 แต่ถ้าต้องการที่จะกระตุ้นยอด review ก็ลดไปก็ได้ครับ
จริงๆ มีอีกหลายเรื่องที่อยากเขียนต่อ แต่ว่าเอาไว้คราวหน้าแล้วกันครับ เดี๋ยวจะยาวไป ขอบคุณที่อ่านครับ :D

ที่มา...http://moetoy.comhttp:/