2012-09-22 22 views
10

Encuentro que la aplicación nativa de Vimeo iOS puede establecer cookies para Safari móvil. ¿Cómo funciona?¿Cómo puede una aplicación nativa de iOS como Vimeo establecer cookies para Safari móvil?

pasos Repo:

1, instale Vimeo iOS aplicación nativa en un dispositivo iOS.

2, abra esta aplicación nativa Vimeo iOS y luego inicie sesión con su cuenta Vimeo.

3, abra Safari móvil y abra la página web "https://vimeo.com/". Descubres que no estás registrado en Vimeo.

4, abra la aplicación nativa de iOS Vimeo y luego haga clic en el icono "Ayuda (signo de interrogación)" en la barra de navegación izquierda. Verá que el centro de ayuda de la página web de Vimeo se abre a través de UIWebView. Y luego puedes cerrar este centro de ayuda.

5, abra Safari móvil y abra la página web "https://vimeo.com/". Encuentra que está registrado en Vimeo.

Gracias.

Respuesta

5

Como se muestra en this question, puede establecer una cookie utilizando la clase NSHTTPCookieStorage.

EDIT:
Como Kitsune señaló, los documentos afirman que esto no funcionará entre aplicaciones en iOS como lo hace en OSX.

No tengo tiempo para probar esto ahora, pero quizás pueda establecer una cookie usando javascript y el método stringByEvaluatingJavaScriptFromString de UIWebView y se compartirá? Aquí es una función que me encontré en el Internet que se podría llamar:

function SetCookie(cookieName,cookieValue,nDays) { 
var today = new Date(); 
var expire = new Date(); 
if (nDays==null || nDays==0) nDays=1; 
expire.setTime(today.getTime() + 3600000*24*nDays); 
document.cookie = cookieName+"="+escape(cookieValue) 
       + ";expires="+expire.toGMTString(); 
} 
+5

De acuerdo con la documentación de 'NSHTTPCookieStorage': _iOS Nota: Las cookies no se comparten entre las aplicaciones en iOS._ – Kitsune

+0

¡Interesante, es bueno saberlo! – lnafziger

+0

@Kitsune _Las cookies no se comparten entre las aplicaciones en iOS._ Las aplicaciones nativas de iOS pueden establecer cookies para Safari móvil. Pero las aplicaciones nativas no pueden obtener o eliminar cookies en Safari móvil. ** ¿Correcto? ** – weilou

3

Es posible que la aplicación nativa de vimeo está pasando algún tipo de señal en señal a través de la cadena de consulta de la página de ayuda, lo que podría redirigir inmediatamente a una página sin token de inicio de sesión en la URL después de configurar una cookie. Dado que el servidor web establece la cookie en UIWebView (Safari), se encuentra cuando utiliza la aplicación Safari.

que no requiriera una API de apoyo en iOS ...

0

Esto, obviamente, no se habría aplicado en el momento de la pregunta de la OP, pero más recientemente las galletas fueron compartidos entre Safari y SFSafariViewController casos en IOS 9 y 10. Vimeo podría haber establecido una cookie a través de un SFSafariViewController invisible para lograr este resultado. Sin embargo, esto ha cambiado en iOS 11. En adelante, cada aplicación (incluido Safari) tendrá un almacén de datos completamente aislado. Anuncio oficial here (a la marca de las 17:28).

En iOS 11, un comportamiento como este ya no será posible (de hecho, evitar que sea el ejemplo destacado en el anuncio de Apple sobre este cambio).

Si necesita una forma de pasar una coincidencia de usuario garantizada desde Safari a su aplicación, necesitará usar una red existente de coincidencias de dispositivo, como Branch.io (publicación completa: estoy en el equipo de la sucursal) . Puede leer acerca de las técnicas que utiliza Branch en lugar del paso de cookies here.

Cuestiones relacionadas