Hay algunas bibliotecas, pero no utilicé ninguna de estas en proyectos grandes, por lo que es posible que desee probarlas:
-
Sin embargo, creo que es algo lo suficientemente simple como para que lo pruebes tú mismo. Personalmente hice exactamente esto cuando necesitaba hacer eso. También puede crear una biblioteca simple que se adapte a sus necesidades.
1. Ejecute métodos JS desde Objective-C
En realidad, esta es solo una línea de código.
NSString *returnvalue = [webView stringByEvaluatingJavaScriptFromString:@"your javascript code string here"];
Más detalles sobre la documentación oficial de UIWebView .
2. Ejecutar métodos Objective-C desde JS
Desafortunadamente, esto es un poco más complejo, porque no existe la misma propiedad (y clase) windowScriptObject que existe en Mac OSX que permita una comunicación completa entre los dos.
Sin embargo, puede llamar fácilmente desde URL personalizadas de JavaScript, como:
window.location = yourscheme://callfunction/parameter1/parameter2?parameter3=value
E interceptarlo de Objective-C con esto:
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *URL = [request URL];
if ([[URL scheme] isEqualToString:@"yourscheme"]) {
// parse the rest of the URL object and execute functions
}
}
Esto no es tan limpio como debería ser (o usando windowScriptObject) pero funciona.
3. Escuche eventos JS nativos de Objective-C (por ejemplo, evento listo para DOM)
De la explicación anterior, verá que si desea hacer eso, debe crear un código JavaScript, adjuntarlo al evento que desea monitorear y llamar a la window.location
llamada correcta para que luego sea interceptada.
Una vez más, no está limpio como debería estar, pero funciona.