WhatsApp implementó el cifrado de extremo a extremo ( whitepaper ) en su última actualización.
¿Cómo es posible que WhatsApp envíe notificaciones push con el contenido del mensaje al servicio de notificaciones push de Apple?
Una posible solución sería enviar el mensaje sin cifrar a los APN desde la propia aplicación, pero esto estaría abierto al abuso y anularía el propósito del cifrado de extremo a extremo.
Actualización:
Acabo de probarlo un poco más, de acuerdo con la documentación de Apple:
Sin embargo, el sistema no inicia automáticamente su aplicación si el usuario la ha forzado a salir. En esa situación, el usuario debe reiniciar la aplicación o reiniciar el dispositivo antes de que el sistema intente iniciar la aplicación de nuevo automáticamente.
Lo probé y resultó en que aún recibía las notificaciones push de texto sin formato. Esto me haría creer que la aplicación no se está ejecutando en segundo plano para descifrar las notificaciones recibidas y luego volver a publicarlas.
Actualización de mayo de 2017:
Ahora he usado la API de VoIP (como se menciona en las respuestas a continuación) para lograr efectivamente el mismo resultado en una aplicación de demostración. Funciona muy bien.
Actualización de julio de 2017:
Apple ya no permite el uso de la API para notificaciones push de aplicaciones que no sean VOIP. Sin embargo, sí permiten que WhatsApp lo haga en su infinita imparcialidad.
Actualización de septiembre de 2018:
Ahora se puede usar una extensión de aplicación de notificación para descifrar notificaciones push. Sin embargo, se desaconseja el uso de bibliotecas dinámicas en dichas extensiones, por lo que debe tener una base de código que pueda compilarse de forma estática para el descifrado, etc.