2012-06-26 3 views
3

Я пытаюсь преобразовать свое родное приложение iOS в гибридное приложение, используя HTML 5. После исследования я закончил с jQuery mobile + phoneGap.HTML 5 + iOS - создание гибридных приложений

Мои вопросы

  1. Можно ли смешивать HTML 5 и нативные функции IOS в рамках одного зрения? Например, я могу использовать текстовое поле html для получения значения и использовать , чтобы сделать некоторое преобразование с помощью iOS picker.
  2. Можно ли перейти на собственный xib с html-страницы?
  3. И, наконец, есть ли лучшее решение для создания гибридного приложения?

заранее спасибо

+0

1 - Возможно, но функции iOS будут в верхней части веб-представления 2 - Возможно, но вы должны убедиться, что веб-просмотр не выгружается. – nhahtdh

+0

@nhahtdh благодарит за ответ. может предложить вам несколько руководств по вышеуказанным темам. –

+0

Проверьте, есть ли существующие плагины, которые вы можете использовать или изменять. В противном случае, я думаю, вам нужно написать свой собственный плагин. – nhahtdh

ответ

7
  1. Да, вы можете смешать собственные функции IOS в рамках одной 'точки зрения'. Если вы хотите вставить собственный сборщик iOS в, веб-представление, это на самом деле невозможно. Как упоминалось в nhahtdh, любые пользовательские представления iOS, которые вы добавляете, будут размещены поверх вашего HTML5 UIWebView. Чтобы выполнять такие задачи, вам необходимо овладеть коммуникацией через Javascript. См. Фреймворки, такие как https://github.com/diy/conduit, о методах упрощения связи между ObjC и Javascript для передачи значений между native и HTML.

  2. Можно выполнять навигацию с HTML-страниц (например, при нажатии на ссылки), настроив приложение iOS для просмотра конкретных запросов URL-адресов и выполнить на их основе действие. Для этой цели я использовал NSURLCache. Итак, если вы хотите, чтобы ссылка в вашем HTML вызывала загрузку xib-файла, вы можете посмотреть, какой URL-адрес запрашивается через NSURLCache, и загрузить ваш xib, когда увидите его. This link помог мне освоить эту технику.

  3. Я понимаю, что все гибридные фреймворки iOS + HTML используют эту общую методику создания REST-подобного набора URL-запросов, которые могут быть проанализированы системой, подобной NSURLCache, и запускать собственные события на основе этих URL-адрес. Хотя использование существующей структуры может сэкономить вам некоторое время, реализовать ее для более простых функций не так сложно. Однако большие каркасы могут помочь вам с более сложным кэшированием ресурсов HTML.

+0

Для 2) вы также можете расширить функцию делегата UIWebView и определить свой собственный протокол для загрузки нагрузки xib (что то же, что и внутри Кордовы). – nhahtdh

+0

Могу ли я использовать плагин childBrowser для загрузки xib в приложение? –

1

Может быть я поздно здесь, но первые два ответа на вопрос является ДА вы можете. Вы можете вызвать метод Objective C, который имеет код выбора Picker и перемещение/нажатие других представлений, из вашего веб-сайта, имеющего Javascript. Вам просто нужно отследить их в своем родном приложении, используя UIWebViewDelegate.Вот пример того, как я сделал это:

// В вашем файле Javascript, внутри метода, из которого вы хотите вызвать Pickerview или хотят столкнуть другой уроженец Посмотреть

 var iframe = document.createElement("IFRAME"); 
     iframe.setAttribute("src", "js-frame:myObjectiveCFunction"; 
     document.documentElement.appendChild(iframe); 
     iframe.parentNode.removeChild(iframe); 
     iframe = null; 

В вашей родной Цель - файл C: включают < < UIWebViewDelegate >>

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request 
     navigationType:(UIWebViewNavigationType)navigationType { 

if ([[[request URL] absoluteString] hasPrefix:@"js-frame:"]) { 
    // Extract the selector name from the URL 
    NSArray *components = [requestString componentsSeparatedByString:@":"]; 
    NSString *functionName = [components objectAtIndex:1]; 
    // Call the given selector 
    [self performSelector:NSSelectorFromString(functionName)]; 
    // Cancel the location change 
    return NO; 
} 
// Accept this location change 
return YES; 

}

- (void)myObjectiveCFunction { 
    // Do whatever you want! 
    // show Native picker view 
    // Push another native View 
} 

Точно так же вы можете даже отправить параметры с HTML-страницы в Objective c. // -----------------------------------

+0

Эй, я новичок в iOS. И как новичок я дал задачу создать гибридное приложение. Я вообще работаю в Android. Для Hybrid Android я делаю файлы HTML, файлы JS и CSS, помещаю их в папки и вызываю html-файл из контейнера. В этом случае, находясь в iOS, вы можете сказать мне, где я могу поместить файлы HTML и позвонить мне. Если у вас есть демо, вы можете показать мне? – Debopam

Смежные вопросы