web-dev-qa-db-fra.com

Comment envoyer une charge utile de notification push silencieuse

Je veux juste savoir comment je peux déterminer quelle action faire sur un Push silencieux:

Voici le aps que j'ai envoyé au client:

"aps": {
    "content-available": 1
}

Mon problème est maintenant quand j'ajoute type: "Order_Update" pour déterminer que le Push silencieux est destiné à la mise à jour de la commande pour afficher une notification d'alerte.

22
Sydney Loteria

Il y a quelques options pour cela! Prenons un petit tour pour comprendre toutes les différentes charges utiles et leur utilisation.


Charge utile simple

Affiché dans le centre de notifications: Oui

Réveille l'application pour effectuer une tâche en arrière-plan: Non

{
    "aps" : {
        "alert" : "You received simple notification!",
        "badge" : 1,
        "sound" : "default"
    }
}

Charge utile avec son de notification personnalisé

Affiché dans le centre de notifications: Oui

Réveille l'application pour effectuer une tâche en arrière-plan: Non

Step 1: Ajoutez un fichier son de notification personnalisé (extensions .wav ou .aiff uniquement. Par exemple, notification.wav) dans votre ensemble d'applications.

Step 2: Configurez votre charge utile comme indiqué ci-dessous pour jouer votre son personnalisé

{
    "aps" : {
        "alert" : "It's a custom notification sound!",
        "badge" : 1,
        "sound" : "notification.wav"
    }
}

Notification avec charge utile personnalisée

Affiché dans le centre de notifications: Oui

Réveille l'application pour effectuer une tâche en arrière-plan: Non

{
    "aps" : {
        "alert" : "It's a notification with custom payload!",
        "badge" : 1,
        "content-available" : 0         
    },
    "data" :{
        "title" : "Game Request",
        "body" : "Bob wants to play poker",
        "action-loc-key" : "PLAY"
    },

}

Ici, le dictionnaire data contient des informations personnalisées comme vous le souhaitez. Il s'affichera également comme notification normale avec le message d'alerte "C'est une notification avec une charge utile personnalisée!".


Notification silencieuse normale

Il ne montrera pas une alerte sous forme de barre de notification; il informera uniquement votre application de la disponibilité de nouvelles données, ce qui incitera l'application à récupérer du nouveau contenu.

Affiché dans le centre de notifications: Non

Réveillez l'application pour effectuer une tâche d'arrière-plan: Oui

{
    "content-available" : 1
}

Notification silencieuse avec charge utile personnalisée

Voici la magie pour afficher une alerte de notification et réveiller votre application en arrière-plan pour une tâche! (Remarque: uniquement s'il fonctionne en arrière-plan et n'a pas été supprimé explicitement par l'utilisateur.) Ajoutez simplement le paramètre supplémentaire "content-available" : 1 dans votre charge utile.

Affiché dans le centre de notifications: Oui

Réveille l'application pour effectuer une tâche en arrière-plan: Oui

{
    "aps" : {
        "alert" : "Notification with custom payload!",
        "badge" : 1,
        "content-available" : 1
    },
     "data" :{
        "title" : "Game Request",
        "body" : "Bob wants to play poker",
        "action-loc-key" : "PLAY"
     }
}

Utilisez l'une de ces charges utiles en fonction des besoins de votre application. Pour background app refresh reportez-vous à documentation d'Apple . J'espère que cela vous donnera toutes les informations nécessaires. Bon codage :)

75
Dipen Panchasara

Si je comprends bien, vous voulez des données supplémentaires dans la charge utile, afin que vous puissiez identifier le type de notification Push ou quelle action doit être traitée.

Pour cela, éditez votre charge utile comme:

 $body = array(
    'content-available' => 1,
    'sound' => ''
    );  

$payload = array();
$payload['aps'] = $body;
$payload['action'] = 'order_update';

Puis dans votre code iOS:

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


    NSString *action = userInfo["action"];


    if([userInfo[@"aps"][@"content-available"] intValue]== 1 && [action isEqualToString:@"order_update") //order update notification
    {
        //handle Your Action here
        return;
    }


}

J'espère que ceci résoudra votre problème!

0
gunjot singh