ฉันไม่ต้องการใช้เวลาในการเรียนรู้ Obj-C ฉันใช้เวลา 7 ปีในการเขียนโปรแกรมเว็บแอปพลิเคชัน ไม่ควรมีวิธีใช้ WebView และเพียงแค่เขียนทั้งแอปในจาวาสคริปต์โดยดึงไฟล์จากทรัพยากรของโครงการโดยตรง
ฉันไม่ต้องการใช้เวลาในการเรียนรู้ Obj-C ฉันใช้เวลา 7 ปีในการเขียนโปรแกรมเว็บแอปพลิเคชัน ไม่ควรมีวิธีใช้ WebView และเพียงแค่เขียนทั้งแอปในจาวาสคริปต์โดยดึงไฟล์จากทรัพยากรของโครงการโดยตรง
คำตอบ:
ฉันพบคำตอบหลังจากค้นหารอบ ๆ นี่คือสิ่งที่ฉันได้ทำ:
สร้างโครงการใหม่ใน XCode ฉันคิดว่าฉันใช้แอพตามมุมมอง
ลากวัตถุ WebView ไปยังอินเทอร์เฟซของคุณและปรับขนาด
ภายใน WebViewController.m ของคุณ (หรือไฟล์ที่มีชื่อคล้ายกันขึ้นอยู่กับชื่อมุมมองของคุณ) ในเมธอด viewDidLoad:
NSString * filePath = [[NSBundle mainBundle] pathForResource: @ "index" ofType: @ "html"]; NSData * htmlData = [NSData dataWithContentsOfFile: filePath]; ถ้า (htmlData) { NSBundle * มัด = [NSBundle mainBundle]; NSString * path = [มัด bundlePath]; NSString * fullPath = [NSBundle pathForResource: @ "index" ofType: @ "html" inDirectory: path]; [webView loadRequest: [NSURLRequest requestWithURL: [NSURL fileURLWithPath: fullPath]]]; }
ตอนนี้ไฟล์ใด ๆ ที่คุณเพิ่มเป็นทรัพยากรในโปรเจ็กต์พร้อมใช้งานในเว็บแอปของคุณแล้ว ฉันมีไฟล์ index.html ซึ่งรวมถึง javascript และ css และไฟล์รูปภาพที่ไม่มีปัญหา ข้อ จำกัด เดียวที่ฉันพบจนถึงตอนนี้คือฉันไม่สามารถสร้างโฟลเดอร์ใหม่ได้ดังนั้นไฟล์ทั้งหมดจึงเกะกะโฟลเดอร์ทรัพยากร
เคล็ดลับ: ตรวจสอบให้แน่ใจว่าคุณได้เพิ่มไฟล์เป็นทรัพยากรใน XCode มิฉะนั้นไฟล์จะไม่พร้อมใช้งาน ฉันได้เพิ่มไฟล์เปล่าใน XCode จากนั้นลากไฟล์ของฉันไปด้านบนในตัวค้นหา นั่นได้ผลสำหรับฉัน
หมายเหตุ: ฉันตระหนักดีว่า Obj-C ต้องไม่ยากที่จะเรียนรู้ แต่เนื่องจากฉันมีแอปนี้อยู่แล้วใน JS และฉันรู้ว่ามันใช้งานได้ใน Safari นี่เป็นวงจรการพัฒนาที่เร็วกว่ามากสำหรับฉัน สักวันฉันแน่ใจว่าฉันจะต้องพังทลายและเรียนรู้ Obj-C
แหล่งข้อมูลอื่น ๆ ที่ฉันพบว่ามีประโยชน์:
การเรียก Obj-C จาก javascript: เรียก objective-c จาก javascript
การเรียกใช้จาวาสคริปต์จาก Obj-C: การพัฒนาแอป iphone สำหรับแฮกเกอร์เว็บ
การอ่านไฟล์จากแอปพลิเคชันบันเดิล: uiwebview
ลองดู PhoneGap ที่http://www.phonegap.com ซึ่งอ้างว่าช่วยให้คุณสามารถฝัง JavaScript, HTML และ CSS ลงในแอป iPhone
สำหรับผู้ที่ทำสิ่งนี้บน iPhone 2.1 (อาจจะ 2.0) คุณไม่จำเป็นต้องสร้างบริการพิเศษใด ๆ สำหรับการจัดเก็บข้อมูลในเครื่อง MobileSafari รองรับ API ฐานข้อมูล HTML5 / WHATWG SQL นี่คือ API เดียวกับที่รองรับโดย Safari และ Firefox บนเดสก์ท็อปเวอร์ชันล่าสุด
หากคุณใช้ชุดเครื่องมือเช่น Dojo หรือ ExtJS ที่มีพื้นที่จัดเก็บข้อมูลที่เป็นนามธรรมโค้ดของคุณควรใช้งานได้กับเบราว์เซอร์สมัยใหม่ทั้งหมดรวมถึง MobileSafari
ในการทดสอบให้เปิดhttp://robertsanders.name/dev/stackoverflow/html5.htmlบน iPhone ของคุณ
หากคุณเปิดหน้านั้นจากนั้นดูระบบไฟล์ของ Jailbroken iPhone คุณควรเห็นฐานข้อมูลบางแห่งใน / private / var / mobile / Library / WebKit / Databases / มีไดเรกทอรีของฐานข้อมูลที่เปิดบนเว็บอยู่ที่นั่น
root # sqlite3 /private/var/mobile/Library/WebKit/Databases/Databases.db SQLite เวอร์ชัน 3.5.9 ป้อน ".help" เพื่อดูคำแนะนำ
sqlite> .databases ไฟล์ชื่อ seq
0 หลัก /private/var/mobile/Library/WebKit/Databases/Databases.db
sqlite> .tables
ต้นกำเนิดฐานข้อมูล
sqlite> เลือก * จากฐานข้อมูล;
1 | http_robertsanders.name_0 | NoteTest | ฐานข้อมูล | ตัวอย่าง API | 20000 | 0000000000000001.db
sqlite> เลือก * จาก Origins;
http_robertsanders.name_0 | 5242880
คุณสามารถสร้างแอปพลิเคชันโดยไม่ต้องรู้จัก obj-C ใด ๆ เฟรมเวิร์ก QuickConnectiPhone ช่วยให้คุณทำสิ่งนี้ได้ ตรวจสอบhttp://tetontech.wordpress.comสำหรับวิธีการใช้งานและวิธีอื่น ๆ ในการทำสิ่งที่คุณขอ
คุณควรให้กระดาษห่อแบบเนทีฟที่เขียนด้วย Objective C กระดาษห่อนี้อาจมีโค้ดไม่กี่บรรทัด (เช่น 10) ที่จำเป็นในการสร้าง WebView และนำทางไปยังที่อยู่ที่ระบุในอินเทอร์เน็ต (ที่แอปพลิเคชันของคุณอยู่) แต่ในกรณีนี้แอปพลิเคชันของคุณควรเป็นเว็บแอปพลิเคชันที่มีคุณสมบัติครบถ้วน (ฉันหมายถึงไม่เพียง แต่ใช้ JavaScript เท่านั้น แต่ยังใช้ HTML สำหรับมาร์กอัปด้วย)
ฉันพบปัญหาเดียวกันนี้ ฉันมีเกมที่เขียนด้วย Javascript ทั้งหมดแล้ว ฉันชอบที่จะสร้างเวอร์ชันที่เป็นมิตรกับ iPhone แต่ Obj-C นั้นเกินความจำเป็น สิ่งที่ฉันทำคือใช้ WebView เพื่อชี้ไปที่ url พิเศษของแอพ iphone หลังจากคิดแล้วฉันคิดว่าฉันสามารถย้ายไฟล์เหล่านั้นไปยังไดเร็กทอรีแอพและเรียกใช้ในเครื่องได้
ไม่มีวิธีดำเนินการกับ Apple API ปัจจุบัน ทางออกที่ใกล้เคียงที่สุดของคุณคือเขียนแอป iPhone พื้นฐานง่ายๆที่ฝังเว็บเบราว์เซอร์ ซึ่งจะช่วยให้คุณสามารถเรียกดูแอปพลิเคชัน xhtml / js ในเครื่องได้
หากคุณต้องการจัดเก็บข้อมูลคุณจะต้องก้าวไปอีกขั้นและรวมเซิร์ฟเวอร์ http ที่มีน้ำหนักเบาซึ่งเซิร์ฟเวอร์แอปของคุณและให้การโทรเพื่อจัดเก็บและดึงข้อมูล อาจไม่ใช่ทางออกที่ดีสำหรับคุณ แต่อาจใช้งานได้น้อยกว่าแอป Obj-C แบบเต็ม
ดังที่ทราบกันดีว่า Obj-C นั้นค่อนข้างง่ายในการเรียนรู้ มีตัวอย่างมากมายใน SDK ชุมชนมีความเข้มแข็งและจะตอบคำถามได้ดีโดยไม่ลังเล
ฉันใช้ phonegap มาระยะหนึ่งแล้วและดูเหมือนว่าจะได้ผลลัพธ์ที่ดีที่สุดสำหรับฉัน ฉันจะโพสต์ประสบการณ์ของฉันในอีก 1 สัปดาห์โดยมีลิงก์ไปยังแอปของฉันด้วย
นอกจากนี้Titanium Mobileยังเป็นตัวเลือกซึ่งช่วยให้คุณสามารถเขียน JavaScript ที่แปลเป็น Objective-C
อีกอย่างน้อย 2 คนพูดถึง phonegap แต่ฉันคิดว่าจะโพสต์สิ่งนี้ด้วยและพูดถึงว่า Apple ได้อนุมัติกรอบ phonegap แล้ว ดังนั้นตอนนี้คุณจะไม่ถูก Apple ปฏิเสธแอปของคุณเพียงเพราะคุณใช้ phonegap