descargar - iOS 9 Safari iframe src con esquema de url personalizado no funciona
ios 9 download (2)
Uso esta solución https://gist.github.com/davidwkeith/2662899 para redireccionar a mi aplicación desde la web si la aplicación está instalada. Pero se rompió en ios 9. Todavía funciona en google chrome, pero iframe con un esquema de url personalizado no inicia la aplicación en safari.
Si reemplazo
document.getElementById(''loader'').src = ''custom-protocol://my-app''
(donde loader is iframe) con
window.location = ''custom-protocol://my-app''
será trabajo
os: iOS 9 beta4 y beta5
Alguien sabe este problema? ¿Es beta ios 9 beta? ¿O no será arreglado?
La respuesta anterior es una implementación parcial de Universal Links que le falta detalles críticos y no incluye una alternativa a la App Store.
En primer lugar, ya no puede establecer iframe src para activar un esquema de URI. Has identificado correctamente ese problema. Como notó, puede, sin embargo, establecer window.location = ''custom-protocol://my-app'';
. Por lo tanto, si sabe que un usuario tiene su aplicación porque ya abrió su aplicación desde el navegador y tiene una cookie almacenada que puede buscarse en su back-end, todavía puede iniciar de forma segura el custom-protocol://
.
En segundo lugar, puede detectar la cadena de agente de usuario utilizando navigator.userAgent. Antes de iOS 9 todavía puedes usar el iframe para disparar un esquema de URI, y luego volver atrás después de un tiempo de espera. En iOS 9, puede elegir disparar el esquema de URI o no según las cookies, luego llevar al usuario a la App Store. Trabajo en Branch y haciendo uso de cookies para recordar si un usuario probablemente tenga la aplicación es algo que hemos implementado. No dude en comunicarse si tiene más preguntas al respecto, o haga uso de nuestra solución directamente.
Implementar Universal Links no es tan simple como la otra respuesta describe. En realidad, hay mucha más complejidad. Aquí hay una lista completa de pasos (he ayudado a varias aplicaciones a integrarse en las últimas semanas usando estos pasos):
1. Configure su aplicación para registrar dominios aprobados
yo. Registraste tu aplicación en developer.apple.com si no lo has hecho
ii. Habilite ''Dominios asociados'' en el identificador de su aplicación en developer.apple.com
iii. Habilite ''Associated Domain'' en su proyecto Xcode
iv. Agregue el derecho de dominio adecuado, applinks:yourdomain.com
, en su aplicación
2. Configure su sitio web para alojar el archivo ''apple-app-site-association''
yo. Compre un nombre de dominio o elija entre su actual
ii. Adquiera la certificación SSL para el nombre de dominio (¡puede usar CloudFlare para esto!)
iii. Crear el archivo JSON estructurado ''apple-app-site-association''
{
"applinks": {
"apps": [ ],
"details": {
"TEAM-IDENTIFIER.YOUR.BUNDLE.IDENTIFIER": {
"paths": [
"*"
]
}
}
}
}
iv. Firme el archivo JSON con la certificación SSL
cat apple-app-site-association-unsigned | openssl smime -sign -inkey yourdomain.com.key -signer yourdomain.com.cert -certfile digicertintermediate.cert -noattr -nodetach -outform DER > apple-app-site-association
v. Configurar el servidor de archivos
El archivo apple-app-site-association: - debe enviarse con el encabezado ''application / pkcs7-mime'' - debe enviarse desde el punto final youdomain.com/apple-app-site-association - debe devolver un código http 200.
Ejemplo Express + Node:
var aasa = fs.readFileSync(__dirname + ''/static/apple-app-site-association'');
app.get(''/apple-app-site-association'', function(req, res, next) {
res.set(''Content-Type'', ''application/pkcs7-mime'');
res.status(200).send(aasa);
});
crédito: prestado liberalmente de esta publicación de blog
Sí, con iOS9 ahora puedes hacer un enlace profundo. Consulte el enlace para obtener una explicación detallada, pero establecí los conceptos básicos.
http://blog.hokolinks.com/how-to-implement-apple-universal-links-on-ios-9/
primero debe ir a su destino y hacer clic en capacidades. Agregue el dominio asociado.
A continuación, debe cargar el archivo apple-app-site-association.
Básicamente abra un editor JSON y construya algo como esto
{
"applinks": {
"apps": [],
"details": {
"TBEJCS6FFP.com.domain.App": {
"paths":[ "*" ]
}
}
}
}
A continuación, debe admitir enlaces de Univeral en su aplicación. Necesitas implementar
extension AppDelegate {
func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let webpageURL = userActivity.webpageURL! // Always exists
if !handleUniversalLink(URL: webpageURL) {
UIApplication.sharedApplication().openURL(webpageURL)
}
}
return true
}
private func handleUniversalLink(URL url: NSURL) -> Bool {
if let components = NSURLComponents(URL: url, resolvingAgainstBaseURL: true), let host = components.host, let pathComponents = components.path?.pathComponents {
switch host {
case "domain.com":
if pathComponents.count >= 4 {
switch (pathComponents[0], pathComponents[1], pathComponents[2], pathComponents[3]) {
case ("/", "path", "to", let something):
if validateSomething(something) {
presentSomethingViewController(something)
return true
}
default:
return false
}