2010-02-25 11 views
69

Tengo dos aplicaciones en la tienda de iTunes: ambas implementan notificaciones automáticas. Mientras estaba probando el envío de notificaciones a estas aplicaciones de producción, noté que un botón destinado a la aplicación A se tituló y abrió la aplicación B.¿El token de dispositivo APN es único para cada aplicación individual?

Ambas aplicaciones están instaladas en el mismo teléfono. Busqué en la tabla de mi dispositivo y vi que los tokens de dispositivo (y, por supuesto, la ID del dispositivo) enumerados para las dos aplicaciones eran los mismos.

Según sea necesario, estoy usando dos certificados diferentes en el servidor, uno para cada aplicación. Supuse que el token o certificado del dispositivo enviaría el mensaje a la aplicación correcta, pero claramente no es así.

Puedo ver en NSLog que los tokens que se envían desde cada aplicación son de hecho los mismos.

¿El token del dispositivo debe ser único para cada aplicación? Si es así, alguna idea de cómo mi teléfono de prueba podría estar enviando el mismo token de dispositivo para ambas aplicaciones a mi servidor. Tenga en cuenta que esto es de dos aplicaciones actualmente en la tienda de aplicaciones.

¡Gracias por cualquier ayuda!

+0

buena pregunta lo aprecio –

Respuesta

90

NOTA: esta es una respuesta de edad que es cierto sólo para iOS < = 6. Ver user1641761's answer para el enfoque actual.

Lo he entendido. Los tokens de dispositivo NO son exclusivos del emparejamiento de la aplicación telefónica. Son únicos para el teléfono solamente. Si tiene varias aplicaciones presionadas en el mismo teléfono, todas usarán el mismo token de dispositivo. El certificado que use para enviar la notificación dictará a qué aplicación va.

+1

Gracias por la pregunta y la respuesta, eso es útil conocer. +1 para cada uno. Tiene sentido que el teléfono decida a qué aplicación se apuntó usando el certificado del servidor, como autenticación del intento del desarrollador. –

+3

Hola @Mups. En la pregunta de apertura, usted declara que: "Según sea necesario, estoy usando dos certificados diferentes en el servidor, uno para cada aplicación". Luego, en su respuesta, usted dice: "El certificado que usa para enviar la notificación dictará a qué aplicación va" ... Entonces, ¿por qué no funcionó? Estoy a punto de implementar una configuración similar para mi backend y me gustaría estar seguro. Gracias. – tompave

+0

@wonderingtomato Estoy atascado con el mismo problema. Cualquier solvencia? – RickDavis

8

Dicho esto, recuerde que Apple se reserva el derecho de cambiar los dispositivos APNToken como mejor le parezca, así que no los use para identificar de manera única a un dispositivo/usuario.

47

iOS 7 manejar esto de manera diferente. Es ÚNICO ahora.

Por favor, véase el punto 1 de este artículo:. http://urbanairship.com/blog/2013/10/03/how-ios-7-handles-push-differently

"Antes de iOS 7, el token dispositivo era la misma en todas las instalaciones de aplicaciones en un dispositivo dado diferentes aplicaciones en su teléfono, ya sea venganza Tap Tap o EE.UU. Hoy, utilizaría la misma dirección, es decir, el token del dispositivo, para enrutar la notificación push a usted. Las credenciales de seguridad que empareja con un mensaje garantizarían que llegue a la aplicación correcta. En iOS 7, Apple ha ido un paso más allá. y se aseguró de que los tokens de dispositivos ahora sean diferentes en cada instalación de la aplicación. Esto ayuda a proteger aún más la privacidad de los usuarios eliminando otro identificador de nivel de teléfono ".

Ver también ios 7 device token is different for same device

+0

Esta respuesta debe marcarse como la respuesta correcta. – noahandthewhale

16

compartir mi entendimiento y pocas respuestas Desarrolladores de Apple:

  • dispositivo Token
    • token de dispositivo es el identificador único del dispositivo.
    • APN genera el token del dispositivo utilizando el certificado único del dispositivo (puede estar utilizando el perfil de aprovisionamiento)
    • El token del dispositivo se puede cambiar. Así que asegúrese de enviar el token de dispositivo actualizado a su servidor cada vez.
    • El token del dispositivo es MISMO para todas las aplicaciones en el dispositivo.
    • Es específico del dispositivo y no específico de la aplicación.
    • Token del dispositivo puede ser diferente para sandbox y producción.
      • Según el perfil de aprovisionamiento (recinto de seguridad o producción), los APN pueden generar diferentes tokens de dispositivo para el entorno limitado y la producción para el mismo dispositivo.
    • Entonces, ¿cómo se diferencia la notificación de inserción en el dispositivo? ¿Para qué aplicación es?
      • Lo hace en función del identificador de la aplicación y el certificado SSL instalado en el servidor (mediante el cual se envía la notificación al servidor de APN).
  • Referencias
+1

Respuesta incorrecta u obsoleta. Su respuesta ya no es válida según la documentación de Apple. Consulte el documento aquí https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html –

0

No puede utilizar token como un identificador único, sino eliminar el token antiguo usando salvamento en keygen (ayuda de iTunes) y eliminar token antiguo y agregar uno nuevo en su base de datos.

1

El token del dispositivo para la notificación de inserción es específico de la aplicación. No es específico del dispositivo. Es decir, el token del dispositivo será diferente y único para múltiples aplicaciones en el mismo dispositivo.

Según Apple,

Al apoyar notificaciones remotas puede proporcionar hasta al día información a los usuarios de su aplicación, incluso cuando la aplicación no se está ejecutando. Para ser capaz de recibir y gestionar las notificaciones remotas, su aplicación debe:

  • activar las notificaciones remotas.

  • Regístrese con el servicio de notificación de Apple Push (APN) y reciba un token de dispositivo específico de la aplicación.

  • Envíe el token del dispositivo a su servidor proveedor de notificaciones.

  • Implemente la compatibilidad para el manejo de notificaciones remotas entrantes.

Un token de dispositivo de aplicación específica es globalmente único e identifica una combinación app-dispositivo. Al recibir un token de dispositivo de APN en su aplicación, es su responsabilidad abrir una conexión de red a su proveedor. También es su responsabilidad, en su aplicación, enviar el token del dispositivo junto con cualquier otro dato relevante que desee al proveedor.Cuando el proveedor envía posteriormente solicitudes de notificación remotas a APN, debe incluir el token del dispositivo, junto con con la carga de notificación. Para obtener más información al respecto, consulte Información general de APN.

Nunca coloque tokens de dispositivo en la memoria caché de su aplicación; en su lugar, obténgalas del sistema cuando las necesites. APNs emite un nuevo token de dispositivo a su aplicación cuando ocurren ciertos eventos. El token del dispositivo está garantizado como diferente, por ejemplo, cuando un usuario restaura un dispositivo de una copia de seguridad, cuando el usuario instala su aplicación en un dispositivo nuevo y cuando el usuario reinstala el sistema operativo. Obtener el token, en lugar de dependiendo de un caché, garantiza que tiene el token de dispositivo actual necesario para que su proveedor se comunique con los APN. Cuando intente obtener un token de dispositivo pero no ha cambiado, el método de recuperación devuelve rápidamente.

Puede remitir el documento de manzana aquí Local and Remote Notification Programming Guide

Cuestiones relacionadas