2015-07-14 3 views
1

У меня есть приложение Cordova, ожидающее события deviceready, и когда это событие срабатывает, установите window.location.href на удаленный сайт, скажем, http://foo.bar.com/lander.html. С этой страницы у меня есть несколько ссылок на другие страницы - скажем page1.html и page2.html. Я хочу поместить кнопку в page1.html, которая вызывает функцию Cordova navigator.notification.vibrate.Cordova - Доступ к функциям устройства доступа из удаленного HTML

У меня есть установленная выше и все работает, за исключением того, что navigation.notification не определено, когда я нажимаю кнопку в page1.html, чтобы попытаться заставить устройство вибрировать. Я скопировал cordova.js на foo.bar.com и ссылаюсь на него с page1.html. Должен ли я включать другие исходные файлы javascript на foo.bar.com? Будет ли этот подход когда-либо работать?

Будет ли это работать, если вместо изменения местоположения окна я должен был получить контент от AJAX и поместить содержимое в контейнер div на странице index.html, которая лежит в основе приложения Cordova?

Это все на iOS, если это имеет значение. Я включил только плагины dialogs и vibration. Я получаю событие deviceready в приложении Cordova и успешно перенаправляюсь на удаленный сайт. Пожалуйста, дайте мне знать, если есть другие факторы, которые я должен принять во внимание. Благодарю.

ОБНОВЛЕНИЕ 1: Я получил вибрацию от локального index.html приложения приложения Cordova, используя навигатор.вибрат вместо navigator.notification.vibrate. Изменение этого на удаленном сайте не помогло. Я также пробовал включать в себя копии vibr.js, Cordova.js и cordova_plugins.js с удаленной страницы - все равно не повезло.

ОБНОВЛЕНИЕ 2: Я нашел в документах Кордовы, где обсуждаются вопросы, о которых я спрашиваю: Вызов функций JavaScript Кордовы с удаленной страницы HTML (страница HTML, не сохраненная локально на устройстве) является неподдерживаемой конфигурацией. Это связано с тем, что Cordova не была разработана для этого, и сообщество Apache Cordova не тестирует эту конфигурацию. Хотя он может работать в некоторых случаях, он не рекомендуется и не поддерживается. Есть проблемы с одной и той же политикой происхождения, поддерживая синхронизацию JavaScript и родных частей Кордовы в одной и той же версии (поскольку они связаны через частные API, которые могут меняться), надежность удаленного контента, вызывающего местные локальные функции, и потенциальное отклонение магазина приложения ,

Отображение удаленного контента HTML в веб-просмотре должно быть выполнено с использованием InAppBrowser Кордовы. InAppBrowser разработан так, что JavaScript, работающий там, не имеет доступа к API-интерфейсам Кордовы JavaScript по причинам, перечисленным выше. См. Руководство по безопасности.

Исходя из этого, это звучит по-настоящему, но, как будто мы сами не будем. Тем не менее, если кто-то успешно это делает, мы хотели бы попробовать.

+0

Как вы сказали, это неподдерживаемая конфигурация не рекомендуется. В любом случае, если вы загрузите всю платформу/ios/www-папку на сервер, она должна работать – jcesarmobile

+0

. Я пытаюсь достичь того же, но пока не повезло. Является ли он по-прежнему неподдерживаемым, и единственным «хорошим» выбором является объединение всего приложения, если я хочу получить доступ к родным функциям? –

+0

@IlyaChernomordik В итоге мы получили что-то работающее, динамически запрашивая JS с сервера во время выполнения.Если я помню, это связано с трюком с добавлением элементов сценария на страницу и что-то делать с тегом IMG. YMMV. – Patrick87

ответ

1

I thinhk, что вы ищете, является push-уведомлением. Для этого есть плагин. http://ngcordova.com/docs/plugins/pushNotifications/ Тем не менее вам нужна задача, выполняемая в вашем приложении.

Надеюсь, что это поможет.

+0

Спасибо за ответ! Я не уверен, что это то, что мы собираемся сделать. – Patrick87

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