2009-12-28 36 views
7

quiero crear una aplicación web para el iPhone y necesito obtener la identificación del dispositivo (en lugar de nombre de usuario/contraseña). ¿Se puede hacer esto?obtener la identificación del iPhone en la aplicación web

+0

por lo que, como alternativa, ¿qué puedo usar como identificador único en lugar de nombre de usuario/contraseña? – nks14

+0

Puede generar un UUID (http://en.wikipedia.org/wiki/Uuid) y almacenarlo en DOM localStorage. – chiborg

+0

mira una pregunta similar: http://stackoverflow.com/questions/2072240/read-udid-from-iphone-with-javascript-on-mobile-safari/2072364#2072364, algunas soluciones se indican allí – PetrV

Respuesta

0

Por supuesto que no. Eso sería un gran agujero de privacidad.

+0

mira en http: //stackoverflow.com/questions/2072240/read-udid-from-iphone-with-javascript-on-mobile-safari/2072364#2072364, puede ser posible con algunas limitaciones – PetrV

+0

en realidad es posible – malhal

+0

Entonces, ¿por qué no? ¿Explicas cómo? –

7

parece que se puede obtener el UDID sin terriblemente demasiado trabajo, esta respuesta es de esta entrada del blog: http://bendytree.com/tips/Getting-an-iPhone-UDID-from-Mobile-Safari

de Apple permite a los desarrolladores para obtener UDID de una persona (& hacer muchas otras cosas) a través de una interacción especial entre el teléfono y tu servidor web. He aquí un resumen:

  1. hacen clic en un vínculo a un archivo XML .mobileconfig en su sitio web
  2. Esto detiene su configuración de aprovisionamiento en su teléfono & les ofrece una botón 'Instalar' (que se deben presionar)
  3. el teléfono envía los datos que se solicitan en XML cifrado a la URL que establezca en su .mobileconfig
  4. de procesar los datos resultantes & muestran que un "gracias" página web

Ejemplo .mobileconfig para recuperar un UDID:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
    <dict> 
     <key>PayloadContent</key> 
     <dict> 
      <key>URL</key> 
      <string>http://yourwebsite.com/retrieve.php</string> 
      <key>DeviceAttributes</key> 
      <array> 
       <string>UDID</string> 
       <string>IMEI</string> 
       <string>ICCID</string> 
       <string>VERSION</string> 
       <string>PRODUCT</string> 
      </array> 
     </dict> 
     <key>PayloadOrganization</key> 
     <string>yourwebsite.com</string> 
     <key>PayloadDisplayName</key> 
     <string>Profile Service</string> 
     <key>PayloadVersion</key> 
     <integer>1</integer> 
     <key>PayloadUUID</key> 
     <string>9CF421B3-9853-4454-BC8A-982CBD3C907C</string> 
     <key>PayloadIdentifier</key> 
     <string>com.yourwebsite.profile-service</string> 
     <key>PayloadDescription</key> 
     <string>This temporary profile will be used to find and display your current device's UDID.</string> 
     <key>PayloadType</key> 
     <string>Profile Service</string> 
    </dict> 
</plist> 

que necesitará para completar su propio URL y PayloadUUID. El PayloadUUID no tiene que generarse de una manera especial, solo asegúrese de que sea exclusivo para su aplicación.

También asegúrese de registrar un manejador de archivos para .mobileconfig (tipo de contenido application/x-apple-aspen-config).

PayloadOrganization y PayloadDescription se muestran al usuario cuando ven el perfil. En mi descripción, dije algo como "Presione Instalar para continuar ..." ya que pueden confundirse en esta pantalla.

No es necesario que firme su .mobileconfig, pero si no lo hace, verá una advertencia de que no está firmado (consulte a continuación).

Not signed profile image

Recepción de los datos solicitados QUIRK ADVERTENCIA: Por alguna razón, el proceso es extremadamente particularmente acerca de cómo su servidor responde cuando se envía al usuario a la URL preestablecida. Después de muchos intentos, creo que su URL de recepción DEBE ser un archivo .php. Esto parece una locura, pero hablo en serio.

PHP era el último idioma en el que quería trabajar, así que decidí redirigirme a una página que pudiera manejarlo mejor.

<?php 
    $data = file_get_contents('php://input'); 
    header("Location: http://www.mysite.com/Results?data=".rawurlencode($data)); 
?> 

QUIRK ADVERTENCIA :: La única manera que (otros &) tengo que trabajar es redirigir a un directorio. Intenté redireccionar a una página .aspx y falló. Si no lo haces bien, se mostrará un mensaje de error vago al usuario & que se bloqueará. Si tiene una mejor explicación para esto, por favor deje un comentario a continuación.

La página a la que se redirige es la página que se muestra al usuario para finalizar el proceso.

En mi ejemplo, esa página recibiría un parámetro de cadena de consulta 'data' que contiene la respuesta xml del teléfono.

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
    <dict> 
    <key>IMEI</key> 
    <string>12 123456 123456 7</string> 
    <key>PRODUCT</key> 
    <string>iPhone4,1</string> 
    <key>UDID</key> 
    <string>b59769e6c28b73b1195009d4b21cXXXXXXXXXXXX</string> 
    <key>VERSION</key> 
    <string>9B206</string> 
    </dict> 
</plist> 
+0

¿Podemos leer IDFA o IFA o cualquier otro identificador único que también sea legible en nativo? ¡UDID ya no es legible en nativo! –

1

sé que es una entrada antigua, pero sólo quiero compartir una implementación de la solución de @ powerj1984 en php y listo para usar que he encontrado aquí:

https://github.com/hunk/get-UDID

Funcionó para mí .

Como dije es una implementación, consulte la solución de @ powerj1984 para una explicación más detallada.

Espero que ayude a alguien.

Cuestiones relacionadas