Estoy recibiendo un mensaje de error después de la adición de este código de parse.com:

- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    if (application.applicationState == UIApplicationStateInactive) {
        [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo];
    }
}

Yo no entiendo realmente lo que está pasando, pero estoy recibiendo este mensaje de advertencia en el registro:

Se ha implementado -[
aplicación:didReceiveRemoteNotification:fetchCompletionHandler:], pero
usted todavía necesita para agregar remoto «notificación» a la lista de sus
apoyado UIBackgroundModes en su Información.plist.

Creo que la adición en su archivo plist UIBackgroundModes - remote-notification podría solucionar el problema,

Pero cuando hago eso, cambia las palabras para el seguimiento:

Required Background Modes -> App downloads content in response to push notifications

Que mi aplicación no hacer, así que estoy confundido en cuanto a por qué estoy haciendo esto en el primer lugar.

5 Comentarios

  1. 32

    Si usted no tiene intención de recuperar los datos en respuesta a una notificación remota creo que se puede aplicar este método delegado:

    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 

    por ejemplo,

    - (void)application:(UIApplication *)application
    didReceiveRemoteNotification:(NSDictionary *)userInfo {
        if (application.applicationState == UIApplicationStateInactive) {
            [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo];
        }
    }

    lugar de la actual que está utilizando.

    • Esto es exactamente lo que yo necesitaba: si usted sigue el análisis de la guía(s), a la suposición de que quieres de fondo-descarga de datos a través de la empuja. Yo no. Así que esta respuesta es la correcta para mí.
    • La principal diferencia es que NO se está implementando el fetchCompletionHandler: versión de la didReceiveRemoteNotification: métodos.
    • En iOS 10 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo está en desuso
  2. 211

    Si usted no desea agregar manualmente clave en su .plist archivo, a continuación, he aquí una versión gráfica de @MurraySagal la respuesta, siga los pasos del 1 al 7 y que voy a hacer. 🙂

    Analizar advertencia de didReceiveRemoteNotification:fetchCompletionHandler

    Nota: Si usted no puede leer los pasos, usted puede ampliar su actual ficha por el uso de combinación de Comando++ (zoom in) y Comando+- (para alejar). Si Comando no funciona, puedes probar con Ctrl.

    • Esto fija el GCM problemas que estaba teniendo. Esta es una buena manera de hacerlo
    • la solución perfecta!
  3. 37

    Creo que @djshiow no es la solución de su problema.

    Deberá agregar lo siguiente en su información.plist de archivo:

    Analizar advertencia de didReceiveRemoteNotification:fetchCompletionHandler

    1) Agregar una nueva fila y en la columna de la izquierda, seleccione de antecedentes modos de.

    2) En el Punto 0 de la fila, haga clic en la columna de la derecha y escriba: remoto-notificación. Presione Entrar.

    Fuente: http://hayageek.com/ios-silent-push-notifications/

  4. 22

    En Xcode 6:

    • En el Navegador de Proyectos haga clic en el proyecto
    • En los Proyectos y Metas de la lista haga clic en el destino.
    • Haga Clic En Capacidades De
    • Ampliar y girar en el Fondo de los Modos de
    • Haga Clic En Remoto Notificaciones

    Esto agregará la Required background modes clave y App downloads content in response to push notifications valor a info.plist.

  5. 0

    Cuando se utiliza la nueva didReceive… método que se espera que haga dos cosas:

    1. Agregar la entrada necesaria en su plist
    2. Agregar un controlador de finalización que manejará el evento para el manejo de los datos

    Si usted no desea descargar los datos, puede agregar esto a su didReceive… método

    completionHandler(.NoData)

Dejar respuesta

Please enter your comment!
Please enter your name here