secreto secretas secreta para moviles mensajeria infieles infiel atrapar app aplicaciones aplicacion javascript android ios objective-c uiwebview

javascript - para - app secretas



ComunicaciĆ³n entre javascript y Objective-c(IOS) (3)

Si entendí correctamente su pregunta de que desea invocar el método Objective-c del script Java, a continuación se muestra el ejemplo al que me he referido en la documentación de Apple :

Veamos una clase de muestra. En este caso, crearemos una clase de libreta de direcciones Objective-C y la expondremos a JavaScript. Comencemos con la definición de clase:

@interface BasicAddressBook: NSObject { } + (BasicAddressBook *)addressBook; - (NSString *)nameAtIndex:(int)index; @end

Ahora escribiremos el código para publicar una instancia de BasicAddressBook en JavaScript:

BasicAddressBook *littleBlackBook = [BasicAddressBook addressBook]; id win = [webView windowScriptObject]; [win setValue:littleBlackBook forKey:@"AddressBook"];

Una vez que exponga estos métodos a JavaScript (que se describe al final de esta sección), podrá acceder a su libreta de direcciones básica desde el entorno JavaScript y realizar acciones en ella utilizando las funciones estándar de JavaScript.

Ahora, hagamos un ejemplo que muestre cómo puede usar la instancia de la clase BasicAddressBook en JavaScript. En este caso, imprimiremos el nombre de una persona en un índice determinado en nuestra libreta de direcciones:

function printNameAtIndex(index) { var myaddressbook = window.AddressBook; var name = myaddressbook.nameAtIndex_(index); document.write(name); }

Sé que la forma de comunicarse entre iOS y javascript es crear URL falsas en JS y anexar una cadena que se utilizará como parámetro para el código Objective-C y analizar esa URL en este método delegado:

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

A continuación, envíe el valor de retorno llamando de nuevo al método nativo stringByEvaluatingJavaScriptFromString con el parámetro callID.

Pero quiero, al igual que Android, llamar directamente a los métodos de Objective-C de JS y obtener un valor de retorno. En lugar de necesitar escribir cualquier método en JavaSCript para obtener el valor de retorno. En realidad, ya tenemos el código JS. Funciona perfectamente al comunicarse con Android.

¿Hay algún truco para resolver mi problema que será aprobado en la AppStore?


No hay un método incorporado para hacerlo, sin embargo, puede usar una biblioteca como WebViewJavascriptBridge: https://github.com/marcuswestin/WebViewJavascriptBridge .

Incluso si hubiera una solución integrada, no hay estándares para esto. Como tal, no funcionaría de la misma manera que lo hace en Android de cualquier manera. La comunicación con el código Obj-C significa que se está alejando del navegador y continúa hacia implementaciones específicas de la plataforma que, por naturaleza, varían según las plataformas.


Puede llamar a los métodos de Javascript desde el objetivo C mediante simples pasos.

Por favor revise esto también vea la documentación de Apple