it-swarm-vi.tech

Làm cách nào tôi có thể viết một ứng dụng iPhone hoàn toàn bằng JavaScript mà không biến nó thành một ứng dụng web?

Tôi không muốn dành thời gian để học Obj-C. Tôi đã dành hơn 7 năm để làm lập trình ứng dụng web. Không nên có cách sử dụng WebView và chỉ cần viết toàn bộ ứng dụng bằng javascript, lấy các tệp ngay từ tài nguyên của dự án?

84
Jeff

Tôi tìm thấy câu trả lời sau khi tìm kiếm xung quanh. Đây là những gì tôi đã làm:

  1. Tạo một dự án mới trong XCode. Tôi nghĩ rằng tôi đã sử dụng ứng dụng dựa trên chế độ xem.

  2. Kéo một đối tượng WebView lên giao diện của bạn và thay đổi kích thước.

  3. Bên trong WebViewControll.m của bạn (hoặc tệp có tên tương tự, tùy thuộc vào tên của chế độ xem của bạn), trong phương thức viewDidLoad:

    NSString * filePath = [[NSBundle mainBundle] pathForResource: @ "index" ofType: @ "html"]; [.__.] NSData * htmlData = [Dữ liệu NSDataWithContentsOfFile: filePath]; [.__.] if (htmlData) {[.__.] NSBundle * bundle = [NSBundle mainBundle]; [.___] NSString * path = [bundle bundlePath]; [.__ : [NSURLRequest requestWithURL: [NSURL fileURLWithPath: fullPath]]]; [.__.]}
  4. Bây giờ bất kỳ tệp nào bạn đã thêm làm tài nguyên cho dự án đều có sẵn để sử dụng trong ứng dụng web của bạn. Tôi đã có một tệp index.html bao gồm các tệp javascript và css và hình ảnh mà không gặp vấn đề gì. Hạn chế duy nhất tôi tìm thấy cho đến nay là tôi không thể tạo các thư mục mới để tất cả các tệp làm lộn xộn thư mục tài nguyên.

  5. Thủ thuật: đảm bảo bạn đã thêm tệp dưới dạng tài nguyên trong XCode hoặc tệp sẽ không khả dụng. Tôi đã thêm một tệp trống trong XCode, sau đó kéo tệp của tôi lên trên cùng trong Trình tìm kiếm. Đó là làm việc cho tôi.

Lưu ý: Tôi nhận ra rằng Obj-C không khó để học. Nhưng vì tôi đã có ứng dụng này trong JS và tôi biết nó hoạt động trong Safari nên đây là một chu kỳ phát triển nhanh hơn nhiều đối với tôi. Một ngày nào đó tôi chắc chắn mình sẽ phải suy sụp và học Obj-C.

Một vài tài nguyên khác tôi thấy hữu ích:

Gọi Obj-C từ javascript: gọi object-c từ javascript

Gọi javascript từ Obj-C: phát triển ứng dụng iphone cho tin tặc web

Đọc tệp từ gói ứng dụng: iwebview

71
Jeff

Hãy xem PhoneGap tại http://www.phoneg.com họ cho rằng nó cho phép bạn nhúng JavaScript, HTML và CSS vào ứng dụng iPhone gốc.

22
Chris Samuels

Đối với những người làm điều này trên iPhone 2.1 (có thể là 2.0), bạn KHÔNG cần tạo bất kỳ dịch vụ đặc biệt nào để lưu trữ dữ liệu cục bộ. MobileSafari xuất hiện để hỗ trợ API cơ sở dữ liệu SQL HTML5/WHATWG. Đây là cùng một API được hỗ trợ bởi các phiên bản gần đây của Safari và Firefox trên máy tính để bàn.

Nếu bạn đang sử dụng bộ công cụ như Dojo hoặc ExtJS cung cấp khả năng trừu tượng hóa lưu trữ, mã của bạn sẽ hoạt động trên mọi trình duyệt hiện đại, bao gồm cả MobileSafari.

Để kiểm tra, hãy mở http://robertsanders.name/dev/stackoverflow/html5.html trên iPhone của bạn.

Nếu bạn mở trang đó rồi nhìn vào hệ thống tập tin của iPhone Bẻ khóa, bạn sẽ thấy một cơ sở dữ liệu ở đâu đó trong/private/var/mobile/Library/WebKit/Cơ sở dữ liệu /. Thậm chí còn có một thư mục của các DB mở web ở đó.

root # sqlite3 /private/var/mobile/L Library/WebKit/Data/Data.db SQLite phiên bản 3.5.9 Nhập ".help" để được hướng dẫn

sqlite> .database tập tin tên seq


0 chính /private/var/mobile/L Library/WebKit/Cơ sở dữ liệu/Cơ sở dữ liệu.db

sqlite> .tables

Nguồn gốc cơ sở dữ liệu

sqlite> chọn * từ Cơ sở dữ liệu;

1 | http_robertsanders.name_0 | NoteTest | Cơ sở dữ liệu | ví dụ API | 20000 | 0000000000000001.db

sqlite> chọn * từ Nguồn gốc;

http_robertsanders.name_0 | 5242880

7
Robert Sanders

Bạn có thể tạo một ứng dụng mà không cần biết bất kỳ obj-C nào. Khung QuickConnectiPhone cho phép bạn làm điều này. Hãy xem http://tetontech.wordpress.com để biết cách sử dụng cũng như các cách khác để làm những gì bạn đã yêu cầu.

4
Lee

nhìn vào cuốn sách mới về vấn đề này

2
cris

Bạn nên có trình bao bọc riêng được viết bằng Objective C. Trình bao bọc này thực sự có thể chứa một vài dòng mã (như, 10) cần thiết để tạo WebView và điều hướng nó đến địa chỉ đã cho trên internet (nơi ứng dụng của bạn cư trú). Nhưng trong trường hợp này, ứng dụng của bạn phải là một ứng dụng web đầy đủ tính năng (ý tôi là, không chỉ sử dụng JavaScript, mà còn sử dụng một số HTML để đánh dấu).

2
Sergey Mikhanov

Tôi gặp vấn đề tương tự. Tôi đã có một trò chơi được viết hoàn toàn bằng Javascript. Tôi rất thích tạo ra một phiên bản thân thiện với iPhone, nhưng Obj-C là một thứ quá mức cần thiết. Điều cuối cùng tôi làm là sử dụng WebView để trỏ đến một url đặc biệt của ứng dụng iphone. Sau khi suy nghĩ về nó, tôi cho rằng tôi chỉ có thể di chuyển các tệp đó vào thư mục ứng dụng và chạy chúng cục bộ.

2
dawnerd

Không có cách nào để làm điều này với API Apple API hiện tại. Đặt cược gần nhất của bạn là viết một ứng dụng iPhone gốc đơn giản nhúng trình duyệt webkit. Điều đó sẽ cho phép bạn duyệt ứng dụng xhtml/js cục bộ.

Nếu bạn muốn lưu trữ dữ liệu, bạn sẽ cần tiến thêm một bước và bao gồm một máy chủ http trọng lượng nhẹ để phục vụ ứng dụng của bạn và cung cấp các cuộc gọi để lưu trữ và truy xuất dữ liệu. Có lẽ không phải là một giải pháp lý tưởng cho bạn, nhưng có thể ít hoạt động hơn một ứng dụng Obj-C đầy đủ.

Là một lưu ý phụ, Obj-C khá dễ học. Có rất nhiều ví dụ trong SDK. Cộng đồng rất mạnh và sẽ trả lời tốt các câu hỏi mà không do dự.

2
jsapara

Tôi đã sử dụng phonegap được một thời gian và nó dường như có kết quả tốt nhất đối với tôi. Tôi sẽ đăng trải nghiệm của mình trong một tuần hoặc lâu hơn với một liên kết đến ứng dụng của tôi.

1
shawn

Titanium Mobile cũng là một tùy chọn - nó cho phép bạn viết JavaScript được dịch sang Objective-C.

1
Josh Brown

Ít nhất 2 người khác đã đề cập đến phonegap, nhưng tôi nghĩ tôi cũng sẽ đăng bài này và đề cập rằng Apple đã phê duyệt khung phonegap. Vì vậy, bây giờ bạn sẽ không bị ứng dụng của mình từ chối bởi Apple chỉ vì bạn đang sử dụng phonegap.

Bài đăng trên blog về phonegap và Apple - http://bloss.nitobi.com/jesse/2009/11/20/phonegapp-store-approval/

Điện thoại Gap Home

0
Neo42