web-dev-qa-db-fra.com

Comment utiliser l'extension de service de notification avec NSNotification dans iOS 10

Apple introduit de nouveaux noms d'extensions "UNNotificationServiceExtension" , mais comment le lancer à partir d'une notification Push?

J'ai lu que l'extension de service fournit un chiffrement de bout en bout pour la charge utile.

Quelle clé est requise pour définir la charge utile de la notification Push?

Comment identifier les données utiles et comment lancer une extension de service à partir d'une notification Push?

8
technerd

Permettez-moi de le faire étape par étape.

UNNotificationServiceExtension - Qu'est-ce que c'est?

UNNotificationServiceExtension est une cible d'application que vous associez à votre application pour modifier les notifications Push au fur et à mesure de leur livraison à l'appareil avant de les restituer à l'utilisateur. Vous pouvez modifier le titre, le sous-titre, le corps et ajouter des pièces jointes à la notification Push en la téléchargeant ou en utilisant celle fournie dans l'application.

Comment créer

Allez dans Fichier -> Nouveau -> Cible -> Extension du service de notification et renseignez les détails.

Quelle clé est requise pour définir la charge utile de la notification Push?

Vous devez définir l'indicateur mutable-content sur 1 pour déclencher l'extension de service. De même, si content-available est défini sur 1, l'extension de service ne fonctionnera pas. Donc, ne le définissez pas ou définissez-le sur 0. (Edit: Ceci n'est pas applicable. Vous pouvez activer ou désactiver l'indicateur content-available)

Comment identifier la charge et comment lancer une extension de service à partir d'une notification Push?

Générez l'extension, puis construisez et exécutez votre application. Envoyez une notification Push avec mutable-content défini sur 1.

Code

UNNotificationService expose deux fonctions:

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request
               withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler;

- (void)serviceExtensionTimeWillExpire;

La première fonction est déclenchée lorsque la notification Push est reçue sur le périphérique et avant qu’elle ne soit présentée à l’utilisateur. Votre code dans la fonction a la possibilité de modifier le contenu de la notification Push dans cette fonction.

Pour ce faire, vous devez modifier la propriété bestAttemptContent de votre extension, qui est une instance de UNNotificationContent et possède les propriétés suivantes: title, subtitle, body, attachments etc. 

La charge utile d'origine de la notification à distance est livrée via la propriété request.content du paramètre de fonction request.

Enfin, vous envoyez votre bestAttemptContent à l’aide de contentHandler:

self.contentHandler(self.bestAttemptContent); 

Vous avez peu de temps pour faire votre travail dans la première méthode. Si ce délai expire, votre deuxième méthode est appelée avec la meilleure tentative effectuée jusqu'ici par votre code.

Exemple de code

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request
               withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
    self.contentHandler = contentHandler;
    self.bestAttemptContent = [request.content mutableCopy];

    // Modify the notification content here...
    self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]", self.bestAttemptContent.title];
    self.contentHandler(self.bestAttemptContent);
}

Le code ci-dessus ajoute [modifié] au titre d'origine dans la charge utile de PN.

Exemple de charge utile

{
    "aps": {
        "alert": {
            "title": "Hello",
            "body": "body.."
        },
        "mutable-content":1,
        "sound": "default",
        "badge": 1,

    },
  "attachment-url": ""
}

Veuillez noter que la clé attachment-url est une clé personnalisée pour vos propres problèmes et non reconnue par iOS.

30
mickeymoon

L'extension du service de notification est très utile pour télécharger du contenu à partir des données de notification et l'afficher dans des notifications telles que des images et d'autres contenus. vous pouvez également utiliser l'extension de service de notification pour exécuter du code lorsque l'application est en arrière-plan ou inactive (tué).

Ici est un guide étape par étape expliquant comment utiliser l'extension de service de notification. Et aussi vous avez la démo de github .

1
Bera Bhavin