Tôi không muốn dành thời gian để tìm hiểu obj-C. Tôi đã dành hơn 7 năm để lập trình ứng dụng web. Sẽ không có cách nào để sử dụng WebView và chỉ viết toàn bộ ứng dụng bằng javascript, kéo các tệp ngay từ tài nguyên của dự án?
Câu trả lời:
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:
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 lượt xem.
Kéo một đối tượng WebView vào giao diện của bạn và thay đổi kích thước.
Bên trong WebViewController.m của bạn (hoặc tệp có tên tương tự, tùy thuộc vào tên chế độ xem của bạn), trong phương thức viewDidLoad:
NSString * filePath = [[NSBundle mainBundle] pathForResource: @ "index" ofType: @ "html"]; NSData * htmlData = [NSData dataWithContentsOfFile: filePath]; if (htmlData) { NSBundle * pack = [NSBundle mainBundle]; NSString * path = [gói bóPath]; NSString * fullPath = [NSBundle pathForResource: @ "index" ofType: @ "html" inDirectory: path]; [webView loadRequest: [NSURLRequest requestWithURL: [NSURL fileURLWithPath: fullPath]]]; }
Giờ đây, 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 có vấn đề gì. Hạn chế duy nhất mà tôi tìm thấy cho đến nay là tôi không thể tạo các thư mục mới nên tất cả các tệp sẽ lộn xộn trong thư mục tài nguyên.
Thủ thuật: đảm bảo bạn đã thêm tệp làm tài nguyên trong XCode, nếu không 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 công cụ tìm. Điều đó đã làm việc cho tôi.
Lưu ý: Tôi nhận thấy rằng obj-C không khó học đến vậy. 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 rằng mình sẽ phải chia nhỏ và học Ob-C.
Một số tài nguyên khác mà tôi thấy hữu ích:
Gọi obj-C từ javascript: gọi mục tiêu-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: uiwebview
Hãy xem PhoneGap tại http://www.phonegap.com, họ cho rằng nó cho phép bạn nhúng JavaScript, HTML và CSS vào một ứng dụng iPhone gốc.
Đố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 dường như hỗ trợ API cơ sở dữ liệu HTML5 / WHATWG SQL. Đâ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 một bộ công cụ như Dojo hoặc ExtJS cung cấp tính năng trừu tượng về bộ nhớ, mã của bạn sẽ hoạt động trên bất kỳ trình duyệt hiện đại nào, 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 đó sau đó nhìn vào hệ thống tệp của iPhone đã Jailbreak, bạn sẽ thấy cơ sở dữ liệu ở đâu đó trong / private / var / mobile / Library / WebKit / Databases /. Thậm chí còn có một thư mục các DB được mở trên web ở đó.
root # sqlite3 /private/var/mobile/Library/WebKit/Databases/Databases.db SQLite phiên bản 3.5.9 Nhập ".help" để được hướng dẫn
sqlite> .databases tệp seq tên
0 main /private/var/mobile/Library/WebKit/Databases/Databases.db
sqlite> .tables
Nguồn gốc cơ sở dữ liệu
sqlite> select * từ Databases;
1 | http_robertsanders.name_0 | NoteTest | Cơ sở dữ liệu | Ví dụ về API | 20000 | 0000000000000001.db
sqlite> select * from Origins;
http_robertsanders.name_0 | 5242880
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 nó cũng như các cách thực hiện khác mà bạn đã yêu cầu.
Bạn nên có trình bao bọc gốc được viết bằng Objective C. Trình bao bọc này có thể chứa rất ít dòng mã (như, 10) cần thiết để tạo một 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).
Tôi đã gặp phải 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 muốn 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. Cuối cùng, những gì 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ộ.
Không có cách nào để làm điều này với API của apple 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ủa mình cục bộ.
Nếu bạn muốn lưu trữ dữ liệu, bạn sẽ cần phải thực hiện thêm một bước nữa 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 lệnh gọi để lưu trữ và truy xuất dữ liệu. Có thể không phải là một giải pháp lý tưởng cho bạn, nhưng có thể ít hiệu quả hơn một ứng dụng obj-C đầy đủ.
Cần lưu ý thêm, obj-C khá dễ học. Có rất nhiều ví dụ trong SDK. Cộng đồng mạnh mẽ và sẽ trả lời tốt các câu hỏi mà không do dự.
Tôi đã sử dụng phonegap trong một thời gian và nó có vẻ mang lại kết quả tốt nhất cho 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 kèm theo một liên kết đến ứng dụng của tôi.
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.
Í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 khuôn khổ phonegap. Vì vậy, bây giờ bạn sẽ không bị Apple từ chối ứng dụng của mình chỉ vì bạn đang sử dụng phonegap.