2012-02-08 8 views
13

Estoy buscando identificar unívocamente un iPhone para que nuestro servidor pueda responder con algunos html personalizados. Quiero poder identificar el teléfono en Safari y en un navegador integrado en la aplicación. Dado que cada aplicación es un espacio aislado, las cookies no funcionarán.Identificador único para safari móvil y en la aplicación en iOS

Gracias

+0

¿Puede aclarar qué quiere decir con "identificar de forma única"? ¿Quiere decir que quiere saber cuándo el mismo teléfono visita su sitio web, ya sea a través de una aplicación o a través de Mobile Safari? –

+0

yup Quiero saber cuándo un teléfono visita nuestro sitio en la aplicación o en el navegador móvil –

Respuesta

10

Esto es realmente muy difícil.

Puede programar la aplicación para que inicie Mobile Safari cuando se abra por primera vez y establezca una cookie, luego redirige a la aplicación utilizando un esquema de URL personalizado.

Esto puede parecer extraño, pero en realidad es cómo funciona el sistema de inicio de sesión compartido de Facebook y permite que tanto la aplicación como el navegador "salgan" de sus areneros y compartan el mismo ID de cookie único.

Por supuesto, no sabría si el usuario ha eliminado la cookie a menos que la redireccione cada vez que se inicie la aplicación, lo que puede resultar molesto.

ACTUALIZACIÓN:

A partir de IOS 9, ahora se puede abrir la página utilizando SFSafariViewController dentro de su aplicación en lugar de volver a dirigir a la aplicación Safari. Esto todavía es un poco torpe, pero puede ser preferible a un doble cambio de aplicación.

+0

Excelente idea, pero de acuerdo con http://stackoverflow.com/questions/8636202/generating-a-non-udid-identifier-in- javascript-to-identify-ios-devices-uniquel las cookies están deshabilitadas de forma predeterminada en Mobile Safari.¿Estoy obteniendo algo mal (por favor discúlpeme por una pregunta de novato, soy un novato real para el desarrollo de iOS)? –

+0

Las cookies de terceros están deshabilitadas, pero la primera parte (una del dominio de la página en la que se encuentra) está habilitada de manera predeterminada. –

12

Esto no es directamente posible, pero con la cooperación de la página web es posible como Nick Lockwood ha declarado, y aquí es una versión muy ampliada del método que se describe:

Su aplicación debe hacer esto:

  1. Safari Mobile lanzamiento, usando [[UIApplication sharedApplication] openURL:url];
  2. La URL debe ser especial, por ejemplo. http://yourwebsite.com/give-ios-app-the-cookie
  3. En su página web, cuando se puso en marcha esa url, una redirección a your-app-url-scheme:cookievalue=<somevalue> (por ejemplo. angrybirds:cookievalue=hh4523523sapdfa)
  4. al delegado de la aplicación recibe - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation proceso de la URL para obtener el valor de la cookie

Tenga en cuenta que no debería hacer esto automáticamente cuando se inicia la aplicación: el usuario verá la transferencia a Mobile Safari y viceversa, lo cual no es una buena experiencia para el usuario y Apple rechazará su aplicación (Apple también considera que esto es "cargar datos personales del usuario al servidor sin su consentimiento previo ").

Sería mejor hacerlo en respuesta al usuario, prestando atención a la experiencia del usuario, por ej. espere a que el usuario presione un botón de "inicio de sesión", luego hágalo, y si el usuario no ha iniciado sesión en su sitio web, http://yourwebsite.com/give-ios-app-the-cookie debería mostrarle al usuario la pantalla de inicio de sesión dentro de safari. Si el usuario ha iniciado sesión, puede mostrar brevemente una pantalla de "Iniciar sesión automáticamente ..." durante uno o dos segundos en Safari antes de redireccionar al usuario.

Cuestiones relacionadas