iOS Web View abriendo múltiples enlaces con demasiada frecuencia pierde requestes

Uno de mis proyectos tiene una vista web que se utiliza para alojar un juego web HTML5 (incluido en el package de aplicaciones). Me he encontrado con un problema curioso. El juego se comunica con la aplicación de alojamiento a través de llamadas de URL abiertas (como se detalla en la siguiente pregunta: ¿Es posible comunicarse entre UINavigationController y la página web cargada dentro de UIWebView? ). Sobrepaso el siguiente método en el delegado de la vista web:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { NSURL *requestURL = [request URL]; NSString *host = [requestURL host]; if([host isEqualToString: @"printHello"]) { NSLog(@"Hello!"); return NO; } return YES; } 

Esto funciona bien para la primera llamada (como document.location (my-app-scheme: // printHello)), ¡luego Hello! de hecho, está conectado a la console de ejecución de la aplicación. Sin embargo, se ignora intentar llamar inmediatamente a una segunda URL de carga de exactamente lo mismo.

He trabajado en esto asegurándome de que cualquier comunicación entre la vista web y la aplicación suceda solo en llamadas individuales, pero esto resulta ser bastante restrictivo, ¿hay alguna estrategia mejor para solucionar esto?

Cuando hice este tipo de comunicación a través de URL, tuve problemas similares con el uso de document.location("someURL") . En cambio, he comenzado a hacer esto:

 var iframe = document.createElement("iframe"); iframe.setAttribute("src", "my-app-scheme://doSomething/"); document.documentElement.appendChild(iframe); iframe.parentNode.removeChild(iframe); 

Esto crea un nuevo iframe que cargará la url que especificó y luego lo eliminará inmediatamente. Esto es lo suficientemente largo como para hacer que se pase el post, pero dado que cada URL se abre en un nuevo "documento", nunca se confunde con la URL que cambia que se supone que debe cargar.

Pruébelo, de todos modos.