Intereting Posts
Android установлен в одном действии, а затем появляется кнопка в другой активности Всегда показывать элементы управления увеличением на MapView Использование Google Guava с Android 1.6 Преобразование из строки в json object android ClassNotFoundException для AndroidAnnotations сгенерированных классов с момента обновления до ADT 22 Как отобразить пользовательский интерфейс календаря в приложении для Android? Загрузка нескольких видео AdMob Как снимать камеру без предварительного просмотра из службы или потока? Эмулятор Visual Studio для Android застрял в «OS is start …», только на уровне API 23 / Android 6 Рисование зеркальных растровых изображений в android SavedInstanceState всегда имеет значение null Совместное использование библиотеки Android между несколькими приложениями Android с использованием Gradle Android – Cordova 3.5.0 deviceready не срабатывает после установки медиаплагина Как удалить тег Html в android? Пример приложения Android для текста

Phonegap Build: белый список доменов Google для API v3

У меня возникли проблемы с отображением карт на двух реальных телефонах Android – один из которых работает на 2.2.2, а один – на 4.2.2. Последний всегда вызывал у меня какое-то горе, когда речь идет о картах. Я поместил это в другой поток здесь, поскольку я частично решил его.

Примечание. Я использую Phonegap Build с Dreamweaver CS6. Просто config.xml без манифеста xml-файла.

Теперь у меня есть еще одна проблема в том, что я должен белить список всех доменов, чтобы карта правильно функционировала в 4.2.2, и я не знаю, почему. Первоначально я имел это в моем config.xml:

<access origin="*.googleapis.com" /> <access origin="*.gstatic.com" /> <access origin="*.google.com" /> <access origin="maps.googleapis.com" /> <access origin="maps.gstatic.com" /> <access origin="mt0.googleapis.com" /> <access origin="mt1.googleapis.com" /> <access origin="csi.gstatic.com" /> 

Хотя это отлично работало для Android 2.2.2, я бы поставил следующие проблемы в 4.2.2:

  • В нижней части карты отсутствует последняя строка плиток (если я использую HTTPS для google maps src)
  • Маркеры вообще не отображались

Просто переименовав все, все эти проблемы исчезли. Однако я не хочу, чтобы все белые списки, так что кто-нибудь знает, если я что-то пропустил?

Любая помощь очень ценится.

EDIT: Я понимаю, что с помощью * .googleapis.com я бы также включил оставшиеся белые списки, похожие. Однако я несколько раз заметил в своих поисках, что iOS требует, чтобы домены были явно указаны. Хотя на данный момент это может быть неприменимо, я намереваюсь, чтобы это приложение использовалось на iOS, поэтому я его оставил (если кто-то не скажет мне, что он совершенно бесполезен и не нужен ;-).

//////// UPDATE 1 ////////

После того, как вы пролистаете вкладку сети на инструментах разработчика Chrome, я извлек все URL-адреса, к которым обращаются карты Google. Явным образом указывая каждую из них, все работает нормально:

  <access origin="https://mts.googleapis.com" subdomains="true"/> <access origin="https://mts0.googleapis.com" subdomains="true"/> <access origin="https://mts1.googleapis.com" subdomains="true"/> <access origin="https://maps.googleapis.com" subdomains="true"/> <access origin="https://fonts.googleapis.com" subdomains="true"/> <access origin="https://maps.gstatic.com" subdomains="true"/> <access origin="https://csi.gstatic.com" subdomains="true"/> <access origin="https://themes.googleusercontent.com" subdomains="true"/> 

Они, вероятно, могут быть изменены, поэтому было бы хорошо, если бы я мог просто использовать подстановочный знак * перед каждым из доменов, но это не работает. Я пробовал оба из них без успеха :

  <access origin="*.googleapis.com" subdomains="true"/> <access origin="*.gstatic.com" subdomains="true"/> <access origin="*.googleusercontent.com" subdomains="true"/> <access origin="https://*.googleapis.com" subdomains="true"/> <access origin="https://*.gstatic.com" subdomains="true"/> <access origin="https://*.googleusercontent.com" subdomains="true"/> 

У кого-нибудь есть идеи относительно того, почему я не могу использовать подстановочный знак в этих случаях? Приветствия.

//////// UPDATE 2 / ANSWER ////////

После долгих экспериментов я нашел ответ. Похоже, вы должны быть очень конкретными в том, как вы пишете теги в файле config.xml, особенно когда речь идет о разрешении субдоменов – очевидно, что поддомены не работают с подстановочными знаками, поэтому вам нужны два блока тегов. Наконец, у меня есть оба устройства, которые работают правильно с помощью https, используя следующее:

  <access origin="*.google.com" /> <access origin="*.googleapis.com" /> <access origin="*.gstatic.com" /> <access origin="*.googleusercontent.com" /> <access origin="google.com" subdomains="true"/> <access origin="googleapis.com" subdomains="true"/> <access origin="gstatic.com" subdomains="true"/> <access origin="googleusercontent.com" subdomains="true"/> 

Надеюсь, это будет полезно кому-то. Я до сих пор не понимаю, почему он отлично работал на старой версии Android. Может быть, кто-то может помочь просветить меня, если они так себя чувствуют?

Solutions Collecting From Web of "Phonegap Build: белый список доменов Google для API v3"

Синтаксис для белых списков изменился с версиями PhoneGap. Если вы используете версию 3.1 или выше, см. Эту документацию для синтаксиса: http://docs.phonegap.com/en/3.1.0/guide_appdev_whitelist_index.md.html . Я думаю, может быть, поэтому ваши подстановочные знаки не работали для вас.

Я использую следующее, и он работает, чтобы показать мои Карты Google в приложении PhoneGap:

 <access origin="*://*.googleapis.com/*" subdomains="true" /> <access origin="*://*.gstatic.com/*" subdomains="true" /> <access origin="*://*.google.com/*" subdomains="true" /> <access origin="*://*.googleusercontent.com/*" subdomains="true" />