Introducción a WKWebView
WKWebView™ presenta una frecuencia de actualización de desplazamiento de 60 fps, gestos integrados, un canal eficiente para intercambiar información entre aplicaciones y la web y el mismo motor JavaScript que Safari.
WKWebView es lo más emocionante de la WWDC 2014.
WKWebview proporciona una API para permitir la interacción js sin utilizar JavaScriptCore o webJavaScriptBridge. Utilice WKUserContentController para habilitar la interacción nativa de js. En pocas palabras, primero registre el método acordado y luego llámelo.
¿UIWebView?&?UIWebViewDelegate?Cómo se reorganizan estas dos cosas en 14 clases y 3 protocolos en WKWebKit.
1.WKBackForwardList: una lista de páginas web visitadas anteriormente a las que se puede acceder mediante operaciones de avance y retroceso.
WKBackForwardListItem: una página en la lista posterior de la vista web.
2.WKFrameInfo: Contiene la información de diseño de la página web.
3. WKNavigation: Contiene información sobre el progreso de carga de la página web.
WKNavigationAction: Contiene información que puede permitir que la página web realice cambios de navegación y se utiliza para determinar si se deben realizar cambios de navegación.
WKNavigationResponse: contiene información de contenido devuelto que puede cambiar la navegación de la página web y se utiliza para determinar si se deben realizar cambios en la navegación.
4.Preferencias WKPreferences: resume las preferencias de visualización de páginas web.
5.WKProcessPool: Representa el grupo de carga de contenido web.
6.WKUserContentController: proporciona métodos para publicar mensajes e inyectar scripts usando JavaScript.
WKScriptMessage: Contiene el mensaje enviado por la página web.
WKUserScript: Representa los scripts de usuario que la página web puede aceptar.
WKWebViewConfiguration: Inicializa la configuración de la vista Web.
7. WKWindowFeatures: Especifica las propiedades de la ventana al cargar una nueva página web.
1.WKNavigationDelegate: proporciona métodos para rastrear la carga de páginas web en la ventana principal y determinar si la ventana principal y las ventanas secundarias están cargando nuevas páginas web.
2.WKScriptMessageHandler: proporciona métodos de devolución de llamada para recibir mensajes de páginas web.
3. WKUIDelegate: proporciona métodos de devolución de llamada para mostrar páginas web como controles locales
WKWebView hereda la mayoría de las interfaces de UIWebView, lo que facilita que las aplicaciones hereden WKWebKit (con Más y cada vez más usuarios actualizan a iOS 8, lo que se ha convertido en una necesidad).
Para aquellos interesados, aquí están las diferencias de API entre las dos clases:
La mayor mejora en comparación con UIWebView es que los datos se pueden compartir entre aplicaciones y el contenido web se puede pasar entre ellas.
WKUserScript permite la inyección en la página antes o después de cargar el cuerpo. Esta poderosa característica permite manipular el contenido web en la página de una manera segura y única.
Un ejemplo sencillo sería insertar un script de usuario en una página web que le permita cambiar el fondo:
El objeto WKUserScript se puede inicializar utilizando el código fuente JavaScript, que puede También se puede aprobar si se inyecta antes o al final de la carga, y si el script afecta este diseño o solo el diseño principal. Por lo tanto, el script de usuario se agrega a "WKUserContentController" y se pasa al proceso de inicialización "WKWebView" a través de la propiedad "WKWebViewConfiguration".
Este ejemplo se puede ampliar fácilmente a modificaciones de página más avanzadas, como eliminar anuncios, ocultar comentarios, etc. Para ver un ejemplo más complejo, consulte aquí: Cambie todas las apariciones de "la nube" por "mi trasero".
Así como la función ?console.log? en la función inspeccionar elemento de Safari imprime mensajes en el terminal de depuración, al llamar a esta función, los mensajes de la página web se pueden pasar a la aplicación:
window.webkit.messageHandlers.{NAME}.postMessage ()
La verdadera magia de esta API es que los objetos JavaScript se pueden convertir _automáticamente_ a objetos Objective-C o Swift.
El nombre del controlador se puede configurar a través de la función de interfaz "addScriptMessageHandler()?" en el protocolo "WKScriptMessageHandler?". Funciones de interfaz en el protocolo:
Entonces, cuando la aplicación recibe una notificación (por ejemplo, se crea un nuevo objeto en la página), puede pasar información como esta:
Agregar un script de usuario para escuchar eventos web y utilizar controladores de mensajes para enviar información a la aplicación.
Se puede utilizar el mismo método para recopilar información de la página para usarla en la visualización de la página de la aplicación o en el análisis de datos.
Se puede utilizar el mismo método para recopilar información de la página para usarla en la presentación de la página o en el análisis de datos de la aplicación.
Por ejemplo, si alguien quisiera crear un navegador especial para NSHipster.com, podría agregar un botón para que aparezca una lista de artículos similares: