2012-03-10 5 views
6

Me gustaría poder leer un UUID del dispositivo desde un dispositivo iOS en una página web. Entiendo que no es posible usar JavaScript para problemas obvios de seguridad, pero utilizo testflight todos los días y puedo ver que tienen acceso a los dispositivos uuid.Certificado iOS instalado por el sitio web que permite vincular el UUID del dispositivo a la sesión

Parece que lo hacen mediante la instalación de una especie de aprovisionamiento perfil en su iPhone cuando se registra su dispositivo.

¿Qué tipo de perfil de certificado/aprovisionamiento debo usar para hacer algo similar?

Entonces yo ser capaz de enlazar un UUID dispositivo a una sesión de página web. Entiendo que esto requiere un reconocimiento por parte de los usuarios, lo que está completamente bien para mí.. No estoy tratando de encontrar una forma de evitar el hecho de que no podemos acceder al dispositivo uuid desde el código, estoy preguntando esto porque sé que testflight está haciendo esto

Respuesta

3

Ok! Creo que lo entiendo ahora

Tienes razón, el UDID es, por supuesto, no le envió el navegador. También estaba convencido de que se trataba de una falla de seguridad de Safari, o algo así, porque testflightapp agrega una ID única similar a UDID, pero no.

lo que realmente hacen, es generar un nuevo DeviceID (no relacionado con el UDID). Luego, para registrar el dispositivo, generan un perfil creado específicamente para este DeviceID, que contiene un Enrollment Payload que registra el dispositivo contra una URL que contiene este DeviceID generado por testflightapp.

En este proceso de inscripción, el dispositivo se le pregunta por el perfil, enviar el UDID (además de otros datos). Esta es la información del perfil pide:

<array> 
    <string>UDID</string> 
    <string>IMEI</string> 
    <string>ICCID</string> 
    <string>VERSION</string> 
    <string>PRODUCT</string> 
    <string>MODEL</string> 
    <string>DEVICE_NAME</string> 
</array> 

lo tanto, cuando el dispositivo solicita al servidor testflightapp inscribir este dispositivo, que son capaces de relacionarse que DeviceID almacenada en el perfil, con el UDID real de la dispositivo actual. Así es como muestran en el navegador que el proceso está completo y conservan el UDID.

Pero esto no completa la respuesta, porque no he resuelto (todavía) cómo relacionan realmente esta sesión web con el UDID, incluso cuando la sesión está muerta, y el ID del dispositivo queda huérfano. La respuesta parece ser (¡no está confirmado, pero está 99% seguro!) Que el proceso de inscripción permite definir un WebClip que se insertará en el menú de Springboard. Este WebClip tiene en la URL escrita el UDID del dispositivo, por lo que cada vez que ingresa en la prueba de lectura a través de este WebClip, está refrescando a la sesión su número UDID, por lo que no importa si la sesión muere.

Espero que mi publicación ayude ahora! Perdón nuevamente por la información anterior incompleta y desinformada.

+0

Suena realmente bien. No compruebo esto yo mismo porque aún no estoy en el proceso de implementar tal característica. Gracias ! – rpechayr

+0

Estoy viendo esta área exacta en este momento. Creo que el clip web especifica la información de firma que coincide con una URL (en este caso * .testflightapp.com), y cada vez que iOS Safari golpea una URL que coincide con ese patrón, también se envía la información de firma. Y esa información de firma une su solicitud a su UDID/su cuenta. – occulus

+0

Si mira la URL del WebClip para el acceso directo de Springboard, la URL no contiene ninguna información de usuario. Confían en el certificado de firma, como se mencionó anteriormente. – occulus

Cuestiones relacionadas