manejo de notificaciones push

Estoy leyendo los documentos de Apple en

Manejo de notificaciones locales y remotas

y me parece tener declaraciones contradictorias. ¿Alguien puede aclarar estos puntos de confusión? Hablemos estrictamente de notificación remota (versus local) por ahora.

Los documentos dicen que si se presiona el botón de acción en la notificación, se llama a la aplicación: didFinishLaunchingWithOptions y pasa la carga útil de notificación. Más tarde, dice que si la aplicación se está ejecutando en primer plano, entrega la notificación a través de la aplicación: didReceiveRemoteNotification :. Esto me implica que cuando la aplicación está en segundo plano o no se está ejecutando, se llama a la aplicación: didFinishLaunchingWithOptions. De lo contrario, se llama a la aplicación: didReceiveRemoteNotification:

Más tarde, hay una nota de iOS que dice lo siguiente:

"Nota de iOS: en iOS, puede determinar si una aplicación se inicia como resultado de que el usuario toque el botón de acción o si la notificación se entregó a la aplicación en ejecución al examinar el estado de la aplicación. En la implementación del delegado de la aplicación : didReceiveRemoteNotification: or application: didReceiveLocalNotification: method, obtiene el valor de la propiedad applicationState y lo evalúa. Si el valor es UIApplicationStateInactive, el usuario presionó el botón de acción; si el valor es UIApplicationStateActive, la aplicación fue la más avanzada cuando recibió la notificación. "

Esto me implica que la aplicación: didReceiveRemoteNotification: se llama cuando la aplicación ya está en primer plano y si el usuario presiona el botón de acción (o desliza el control deslizante de acción en iOS 5) para poner en primer plano / iniciar la aplicación.

La fuente de mi confusión podría estar en la primera parte en la que los documentos implican que la carga útil de notificación se envía con la aplicación: didFinishLaunchingWithOptions: método o con un malentendido de lo que es una aplicación "en ejecución" (¿se considera una aplicación en segundo plano como "en ejecución"?) . La documentación para la aplicación: didReceiveRemoteNotification: indica que se llama para aplicaciones "en ejecución".

Entonces, para resumir, ¿podría obtener una aclaración sobre:

1) ¿Aplicación: didReceiveRemoteNotification: siempre se llama cuando la aplicación está en primer plano o cuando el usuario selecciona "actuar" en la notificación? Si no es así, ¿cómo entendemos la Nota de iOS para determinar si el Estado de la aplicación está activo o inactivo?

2) ¿Se está ejecutando una aplicación en segundo plano, al menos en el sentido de los documentos que reclaman la aplicación: didReceiveRemoteNotification se llama para ejecutar aplicaciones?

3) Para completar, ¿es una aplicación UIApplicationStateInactive o Active en segundo plano?

Respuestas a la pregunta(2)

Su respuesta a la pregunta