mobile - web_application_client_id - reversed_client_id google plus
¿Cómo funciona Phonegap? (4)
Usamos PhoneGap para usar la capacidad nativa de un dispositivo móvil. ¿Cómo funciona el trabajo internamente? ¿Cómo podemos acceder a las clases de implementación de PhoneGap desde un método de JavaScript? ¿Puede alguien por favor explicar esto?
El código fuente está disponible abiertamente y, por lo tanto, se puede examinar para ver cómo se implementa, lo cual es diferente en cada plataforma, por lo que no puede obtener una respuesta única que cubra todos los sistemas operativos. En iOS, se realiza mediante un UIWebView, donde se puede invocar el código nativo forzando un cambio de ubicación del navegador usando un esquema de URL propietario. Este cambio hace que se invoque un método en el código nativo que puede examinar el esquema de url y los parámetros pasados, luego se apaga y realiza algún procesamiento relevante. Luego, hay una forma de invocar Javascript desde Objective-C dentro de iOS que puede usarse para pasar los resultados al lado de Javascript de las cosas.
Todo el proceso detallado es demasiado largo para describirlo en una respuesta aquí.
Cómo se implementa en otras plataformas es diferente, por supuesto.
Este mecanismo se puede abstraer detrás de una API para que las aplicaciones de PhoneGap no sean conscientes de las diferencias en los detalles de implementación de plataformas específicas.
¿Por qué no preguntar en el foro de PhoneGap o mirar el código fuente si necesita muchos detalles?
Este también es bueno: http://blog.quadnode.com/2011/12/05/phonegap-how-does-it-work/
Hice algunos comentarios sobre cómo Cordova iOS pasa los mensajes a WebView. Así es como pasar un mensaje de iOS a JavaScript.
La clase UIWebView
tiene un método llamado stringByEvaluatingJavaScriptFromString
.
Si observa algunos archivos en el Proyecto Cordova de iOS, están pasando el JavaScript como una cadena que se ejecutará a esa función, por ejemplo, CDVPlugin.m .
No sé si iOS escribe un nuevo nodo DOM (algo así como <script>alert(''from iOS'');</script>
) o ejecuta JavaScript a través de un enlace especial en Safari. Creo que más tarde, en eso, la documentación mencionada anteriormente dice:
El tiempo de ejecución de JavaScript está limitado a 10 segundos para cada punto de entrada de nivel superior. Si su script se ejecuta por más de 10 segundos, la vista web deja de ejecutar el script. Es probable que esto ocurra en un lugar al azar en su código, por lo que pueden surgir consecuencias no deseadas. Este límite se impone porque la ejecución de JavaScript puede hacer que el hilo principal se bloquee, por lo que cuando se ejecutan los scripts, el usuario no puede interactuar con la página web.
Las asignaciones de JavaScript también están limitadas a 10 MB. La vista web genera una excepción si excede este límite en la asignación de memoria total para JavaScript.
No sé cómo podrían imponer esas limitaciones sin algún acceso especial al estado interno de UIWebView, por lo que dudo que solo estén insertando un nuevo nodo DOM.
No estoy completamente seguro, pero aquí está el tutorial de información . Es un buen lugar para empezar.