plugin permisos name engine content android google-maps-api-3 cordova whitelist

android - permisos - ionic whitelist plugin



Creación de Phonegap: listas blancas de Google Map Domains para API v3 (1)

La sintaxis para los dominios incluidos en la lista blanca ha cambiado con las versiones de PhoneGap. Si tiene la versión 3.1 o superior, consulte esta documentación sobre la sintaxis: http://docs.phonegap.com/en/3.1.0/guide_appdev_whitelist_index.md.html . Estoy pensando que tal vez sea por eso que tus comodines no estaban funcionando para ti.

Estoy usando lo siguiente y funciona para mostrar mis Google Maps en mi aplicación 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" />

He estado teniendo problemas para hacer que los mapas se muestren correctamente en dos teléfonos Android reales, uno con 2.2.2 y otro con 4.2.2. Este último siempre me ha causado cierta pena cuando se trata de mapas. He puesto esto en otro hilo aquí ya que lo he resuelto parcialmente.

Nota: Estoy utilizando Phonegap Build con Dreamweaver CS6. Solo un archivo config.xml sin manifiesto xml.

Ahora tengo otro problema porque tengo que incluir en la lista blanca todos los dominios para que el mapa funcione correctamente en 4.2.2 y no sé por qué. Inicialmente tuve esto en mi 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" />

Si bien esto funcionó perfectamente para Android 2.2.2, obtendría los siguientes problemas en 4.2.2:

  • La parte inferior del mapa falta la última fila de mosaicos (si uso HTTPS para google maps src)
  • Los marcadores no se mostrarían en absoluto

Al incluir en la lista blanca todo, todos estos problemas desaparecieron. Sin embargo, no quiero incluir en la lista blanca todo, ¿alguien sabe si me falta algo aquí?

Cualquier ayuda muy apreciada.

EDITAR: entiendo que al usar * .googleapis.com también abarcaré los dominios restantes de la lista blanca que sean similares. Sin embargo, he notado un par de veces en mis búsquedas que iOS requiere que los dominios aparezcan explícitamente. Aunque esto puede no ser aplicable aquí en este momento, tengo la intención de que esta aplicación se use en iOS, así que la dejé (a menos que alguien pueda decirme que es completamente inútil y no es necesaria ;-).

//////// ACTUALIZACIÓN 1 ////////

Después de verter a través de la pestaña de red en las herramientas de desarrollo de Chrome, extraje todas las URL a las que acceden los mapas de Google. Al establecer explícitamente cada uno de ellos, todo funciona bien así:

<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"/>

Estos probablemente estén sujetos a cambios, por lo que sería bueno si pudiera usar un comodín * delante de cada uno de los dominios, pero esto no funciona. He intentado los dos siguientes sin éxito :

<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"/>

¿Alguien tiene alguna idea de por qué no puedo usar el comodín en estos casos? Aclamaciones.

//////// ACTUALIZACIÓN 2 / RESPUESTA ////////

Después de mucha experimentación, he encontrado la respuesta. Parece que tienes que ser muy específico en la forma de escribir las etiquetas en config.xml, especialmente cuando se trata de permitir subdominios. Al parecer, la especificación de subdominios no funciona con comodines, por lo que necesitas dos bloques de etiquetas. Finalmente tengo ambos dispositivos funcionando correctamente usando https usando lo siguiente:

<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"/>

Espero que esto sea útil para alguien. Todavía no entiendo por qué funcionó bien en la versión anterior de Android. ¿Tal vez alguien puede ayudarme a iluminarme si así lo sienten?