Я не хочу витрачати час, щоб вивчити Obj-C. Я провів 7+ років, займаючись програмуванням веб-додатків. Чи не повинен бути спосіб використовувати WebView і просто написати весь додаток у javascript, витягуючи файли прямо з ресурсів проекту?
Відповіді:
Я знайшов відповідь після пошуку навколо. Ось що я зробив:
Створіть новий проект у XCode. Думаю, я використовував додаток на основі перегляду.
Перетягніть об'єкт WebView на свій інтерфейс і змініть розмір.
Усередині вашого WebViewController.m (або файлу з подібним іменем, залежно від назви вашого подання), у методі viewDidLoad:
NSString * filePath = [[NSBundle mainBundle] pathForResource: @ "index" ofType: @ "html"]; NSData * htmlData = [NSData dataWithContentsOfFile: filePath]; if (htmlData) { NSBundle * bundle = [NSBundle mainBundle]; NSString * path = [bundle bundlePath]; NSString * fullPath = [NSBundle pathForResource: @ "index" ofType: @ "html" inDirectory: path]; [webView loadRequest: [NSURLRequest requestWithURL: [файл NSURLURLWithPath: fullPath]]]; }
Тепер усі файли, які ви додали як ресурси до проекту, доступні для використання у вашому веб-додатку. У мене є файл index.html, що включає файли javascript, css та зображення без проблем. Єдине обмеження, яке я знайшов на даний момент, полягає в тому, що я не можу створювати нові папки, тому всі файли захаращують папку ресурсів.
Хитрість: переконайтесь, що ви додали файл як ресурс у XCode, інакше файл буде недоступний. Я додав порожній файл у XCode, а потім перетягнув файл зверху у шукач. Це працювало на мене.
Примітка: Я розумію, що Obj-C не повинен бути таким важким для вивчення. Але оскільки я вже маю цю програму в JS, і я знаю, що вона працює в Safari, це набагато швидший цикл розробки для мене. Якось я впевнений, що мені доведеться зламатися і вивчити Obj-C.
Кілька інших ресурсів, які я знайшов корисними:
Виклик Obj-C з javascript: виклик object-c з javascript
Виклик 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. Подумавши про це, я думаю, я міг би просто перенести ці файли в каталог додатків і запустити їх локально.
Неможливо це зробити за допомогою поточного API Apple. Ваша найближча ставка - написати просту рідну програму для iPhone, яка вбудовує браузер webkit. Це дозволить вам переглядати вашу програму xhtml / js локально.
Якщо ви хочете зберігати дані, вам потрібно зробити на крок далі і включити легкий http-сервер, який обслуговує вашу програму та забезпечує дзвінки для зберігання та отримання даних. Можливо, це не ідеальне рішення для вас, але, можливо, менше роботи, ніж повноцінна програма Obj-C.
Як допоміжна примітка, Obj-C досить легко вивчити. У SDK є маса прикладів. Спільнота сильна і без вагань відповість на добре поставлені питання.
Я використовую фонегап деякий час, і, здається, це найкращі результати для мене. Я опублікую свій досвід приблизно через тиждень із посиланням на свій додаток.
Titanium Mobile - це також варіант - він дозволяє писати JavaScript, який перекладається на Objective-C.
Принаймні ще 2 згадали про фонегап, але я думав, що я теж це опублікую та згадаю, що Apple схвалила фненегап. Отже, зараз ви не отримаєте від Apple відхилення вашого додатка лише тому, що ви використовуєте фонегап.