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?
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 (Edit: Ceci n'est pas applicable. Vous pouvez activer ou désactiver l'indicateur 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.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.
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 .