Una vez creado, ¿cambia el token del dispositivo de notificación push?
Ejemplo cuando se actualiza la aplicación? o en cualquier otro caso puede cambiar
Una vez creado, ¿cambia el token del dispositivo de notificación push?
Ejemplo cuando se actualiza la aplicación? o en cualquier otro caso puede cambiar
Respuestas:
De [Documentación de Apple ApplePushService] 2
fuente
La documentación oficial de Apple no está clara en este punto. Lo que he observado es esto: el token es invariante para un dispositivo, aplicación y dominio determinados (producción frente a sandbox). Creo que esto debe seguir siendo cierto para que el sistema funcione de manera confiable. Considere la situación en la que una actualización de la aplicación activa un nuevo token APN; Si estuviera usando la mejor nueva aplicación similar a Twitter, con las notificaciones habilitadas, ¿qué pasaría cuando actualice mi aplicación desde iTunes? ¿Debería tener la expectativa de que se seguirán enviando notificaciones aunque no haya ejecutado las aplicaciones ya que "sincronizo" la actualización en mi dispositivo? El acto de cambiar la aplicación no puede afectar el sistema APN ya que el sistema operativo puede recibir notificaciones en su nombre aunque no haya ejecutado la aplicación actualizada.
Para ser claros, Apple afirma que "una aplicación debe registrarse [con los servidores APN] cada vez que se inicia y darle a su proveedor el token actual". Estoy totalmente de acuerdo; hacerlo protegerá su aplicación de suposiciones erróneas o situaciones inusuales.
Una de las respuestas a ¿Son los tokens de notificación push únicos en todas las aplicaciones para un solo dispositivo? indica que los tokens de dispositivo son únicos por "instalación del sistema operativo"; y que restaurar desde una copia de seguridad a un dispositivo mantendría el token, pero borrar un dispositivo hará que obtenga un nuevo token. Esto sería totalmente coherente con las intenciones de Apple de operación y privacidad sin problemas: limpiar un dispositivo es lo suficientemente severo como para justificar una nueva asociación, pero un usuario que restaure una imagen después de una actualización del sistema operativo querría conservar sus notificaciones existentes. Si recuerdo la actualización reciente de iOS5 en mi iPad, restauré la copia de seguridad más reciente después de la actualización, por lo que esto habría mantenido la consistencia de mi token de notificación. [Editar: restaurar una copia de seguridad en otro dispositivo NO duplicará el token.]
advertencia: no tengo un conocimiento definitivo sobre el tema, solo algo de experiencia razonable trabajando con APN (como desarrollador externo). Como siempre, es mejor verificar sus suposiciones.
Actualización (junio de 2012):
Recientemente tuve la oportunidad de a> hablar con los ingenieros de Apple yb> ejecutar algunas pruebas del mundo real, y quería presentar los resultados:
Para ser completo, cuando hablo de devolver un token APN, asumo el contexto de un solo identificador / aplicación de paquete.
Primero, los ingenieros de Apple dijeron que no debería ser posible que dos dispositivos devuelvan el mismo APN. A pesar de los comentarios a continuación, no he podido identificar una circunstancia en la que esto falle.
En segundo lugar, aquí está la secuencia de la prueba de actualización y los resultados:
Comience con iOS4 instalado en iPhone4; dispositivo de respaldo en iTunes
Actualice a iOS5
De una prueba anterior, sé que el token APN ahora es diferente
Restaurar la copia de seguridad en el dispositivo
El token APN ahora es el mismo que en el paso 1.
Restablecer iOS (dispositivo limpio)
El token APN cambia
Haga una copia de seguridad de un teléfono diferente en iTunes y restaure esa copia de seguridad para probar el dispositivo; básicamente, estoy restaurando la copia de seguridad "incorrecta", como si estuviera cambiando de teléfono.
El token de APN cambia nuevamente; además, es distinto y no coincide con los tokens ni con el token original ni con el token "clonado".
Restaure la copia de seguridad "correcta" en el dispositivo.
El token de APN ahora es el mismo que el del paso 1.
Por último, actualicé el teléfono a iOS6 (beta2), restauré mi copia de seguridad y volví a probar. Como se esperaba, el token continuó coincidiendo con el token en el paso 1.
En este punto, estoy bastante seguro de que los tokens APN no se pueden duplicar entre diferentes dispositivos; quizás esto haya ocurrido como un error en versiones anteriores de iOS, pero estoy seguro de que iOS5 (y presumiblemente iOS6) están manejando los tokens APN correctamente.
Actualización (agosto de 2012)
Me he dado cuenta de que no había añadido este: tokens de dispositivo van a cambiar. Uno de los desarrolladores de Apple compartió conmigo que los tokens realmente caducan (después de 2 años, creo). Para muchos propósitos, esto es lo suficientemente largo como para considerarlo invariante.
[No me preocupa tener que actualizar mis scripts de prueba con nuevos tokens cada dos años, especialmente porque cambio de teléfono todos los años].
fuente
Lo acabo de probar con cambios de token de inserción de iOS9 y APN si reinstalo una aplicación.
fuente
SÍ , los tokens de dispositivo pueden cambiar.
Cada vez que su aplicación recibe un token, debe almacenarlo. Luego, siempre que se reciba un nuevo token (lo que sucederá, eventualmente), compare el nuevo token con el token almacenado y, si son diferentes:
nil
)En la práctica, es probable que el último paso no sea trivial. Por ejemplo, si tiene un servicio que envía alertas meteorológicas a un token de dispositivo en función del código postal al que se ha suscrito ese dispositivo, debe pasar el
old_token
y elnew_token
a dicho servicio para que pueda actualizar la entrega.Ergo, en términos generales, el 100% de las API que aceptan un "token de dispositivo" también deben tener algún tipo de
UPDATE
instalación para ese token. Para no crear de esto es que la acumulación de notificaciones entregadas no-mis-entregados y.fuente
El token del dispositivo cambia de iOS 8 y posterior
Consulte el texto a continuación del sitio web de Apple. Registro, programación y gestión de notificaciones de usuario
fuente
Creo que vale la pena mencionar que, como nadie lo hizo, el token cambia después de haber llamado
unregisterForRemoteNotifications
. LaregisterForRemoteNotifications
próxima vez que llame, el token será diferente. No pude encontrar ninguna confirmación de esto en los documentos de Apple, pero yo mismo fui testigo de tal comportamiento. Por favor tenga esto en cuentafuente
No debería cambiar, a menos que su aplicación se restaure en un nuevo dispositivo (momento en el que no se le pedirá que vuelva a aceptar notificaciones automáticas, y simplemente le enviará la llamada registrada, momento en el que debe aceptar el nuevo token).
Pero Apple no garantiza que nunca cambie (de ahí que la documentación nunca lo mencione). Es mejor que programe para lo peor y asuma que puede cambiar algún día. Además, enviar un token a su servidor con regularidad le permite eliminar tokens que no se han registrado durante un tiempo y que probablemente hayan desinstalado su aplicación o hayan perdido el interés hace un tiempo (¡y la documentación lo especifica como comportamiento deseado!).
fuente
De - Apple Docs
Adicionalmente:
fuente
¡Los enlaces se vuelven obsoletos rápidamente con Apple! así que estoy citando lo que parece estar bastante claro ahora:
De esta guía
fuente
Como referencia a las notificaciones push de Apple
El token del dispositivo es su clave para enviar notificaciones automáticas a su aplicación en un dispositivo específico. Los tokens de dispositivo pueden cambiar, por lo que su aplicación debe volver a registrarse cada vez que se inicia y pasar el token recibido a su servidor. Si no actualiza el token del dispositivo, es posible que las notificaciones remotas no lleguen al dispositivo del usuario. Los tokens de dispositivo siempre cambian cuando el usuario restaura los datos de respaldo en un nuevo dispositivo o computadora o reinstala el sistema operativo. Al migrar datos a un nuevo dispositivo o computadora, el usuario debe iniciar su aplicación una vez antes de que las notificaciones remotas se puedan enviar a ese dispositivo.
Nunca almacene en caché un token de dispositivo; siempre obtenga el token del sistema cuando lo necesite. Si su aplicación se registró anteriormente para recibir notificaciones remotas, volver a llamar al método registerForRemoteNotifications no genera gastos generales adicionales, e iOS devuelve el token del dispositivo existente al delegado de su aplicación de inmediato. Además, iOS llama a su método de delegado cada vez que cambia el token del dispositivo, no solo en respuesta a que su aplicación se registre o se vuelva a registrar.
fuente
Según este enlace, el token del dispositivo
fuente
Sí , puede cambiar. Idealmente, siempre que recibamos un token a través del método de devolución de llamada
La aplicación debe registrar / actualizar el token en el servidor remoto. Esto asegurará que el token en APNS y su servidor se mantengan sincronizados.
Según la documentación de Apple ,
fuente
El token del dispositivo retransmite la instalación de la aplicación.
Significa que si reinstala la aplicación, cambia ; no importa si lo hace desde una copia de seguridad, una actualización de iOS, etc.
La forma correcta de usarlo, para evitar cualquier problema, es obtener el que se da
NSPAppDelegate
en cada lanzamiento de la aplicación, en el métododidRegisterForRemoteNotificationsWithDeviceToken
fuente