Cacao manejo de un esquema de URL HTTP estándar de aplicaciones
-
05-10-2019 - |
Pregunta
necesito para manejar las direcciones URL HTTP que comienzan con un cierto dominio con mi aplicación, porque apunta a una fuente RESTO. El servicio web sin embargo no está bajo mi control, así que no puedo introducir fácilmente un esquema de URL personalizada para abrir los enlaces con mi aplicación.
¿Hay una manera de interceptar y manejar este tipo de URL en una aplicación Cocoa?
Ejemplo: http://static.domain.name/some/random/path
Mi aplicación debe manejar todos los enlaces que apuntan a http://static.domain.name
Me temo que la respuesta será no, pero bueno, todo es posible de alguna manera:)
.Actualizar
Este es el código de extensión de Safari que solía hacer el trabajo (contenido en <> reemplazado con sus cosas)
var allLinks = document.links;
for (var i=0; i<allLinks.length; i++) {
var link = allLinks[i];
if (/.*<match>.*/.test(link.href)) {
var rewrite = link.href.replace(/<match>/, "<customscheme>://");
link.href = rewrite;
console.log("Rewrote: " + rewrite);
}
}
Solución
Sólo codificar toda la url bajo su propio esquema, por ejemplo, myscheme://http%3A//static.domain.name/some/random/path
Cuando sus manijas de aplicación de la URL, simplemente cortan fuera de la primera parte y unescape que:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
NSString * urlString = [url description];
// Remove your scheme
urlString = [urlString stringByReplacingOccurrencesOfString:@"myscheme://" withString: @""];
// Unescape
urlString = [urlString stringByReplacingPercentEscapesUsingEncoding: NSASCIIStringEncoding];
// Do something with urlString
return YES;
}
Pero no. No se puede asignar a http://
mango