Mises à jour Azure Notification Hubs pour iOS 13
Apple a récemment apporté des modifications à son service push public ; ces modifications sont principalement alignées sur la version d’iOS 13 et Xcode. Cet article décrit l’impact de ces modifications sur Azure Notification Hubs.
Modifications de la charge utile d’envoi (push) APNS
Type d’envoi (push) APNS
Apple demande maintenant aux développeurs d’identifier les notifications en tant qu’alerte ou notifications en arrière-plan via le nouvel en-tête apns-push-type
dans l’API APNS. Selon la documentation d’Apple : « La valeur de cet en-tête doit refléter précisément le contenu de la charge utile de votre notification. En cas de non-concordance ou si l’en-tête est manquant sur les systèmes requis, Apple Push Notification Service peut retourner une erreur, retarder la remise de la notification ou la supprimer entièrement. »
Les développeurs doivent maintenant définir cet en-tête dans les applications qui envoient des notifications via Azure Notification Hubs. En raison d’une limitation technique, les clients doivent utiliser l’authentification basée sur les jetons pour les informations d’identification APNS avec les demandes qui incluent cet attribut. Si vous utilisez l’authentification basée sur les certificats pour vos informations d’identification APNS, vous devez passer à l’utilisation de l’authentification basée sur les jetons.
Les exemples de code suivants montrent comment définir cet attribut d’en-tête dans les demandes de notification envoyées via Azure Notification Hubs.
Notifications de modèles - kit SDK .NET
var hub = NotificationHubClient.CreateFromConnectionString(...);
var headers = new Dictionary<string, string> {{"apns-push-type", "alert"}};
var tempprop = new Dictionary<string, string> {{"message", "value"}};
var notification = new TemplateNotification(tempprop);
notification.Headers = headers;
await hub.SendNotificationAsync(notification);
Notifications natives - kit SDK .NET
var hub = NotificationHubClient.CreateFromConnectionString(...);
var headers = new Dictionary<string, string> {{"apns-push-type", "alert"}};
var notification = new AppleNotification("notification text", headers);
await hub.SendNotificationAsync(notification);
Appels REST directs
var request = new HttpRequestMessage(method, $"<resourceUri>?api-version=2017-04");
request.Headers.Add("Authorization", createToken(resourceUri, KEY_NAME, KEY_VALUE));
request.Headers.Add("ServiceBusNotification-Format", "apple");
request.Headers.Add("apns-push-type", "alert");
Pour vous aider durant cette transition, quand Azure Notification Hubs détecte une notification pour laquelle apns-push-type
n’est pas défini, le service déduit le type d’envoi (push) à partir de la demande de notification et définit automatiquement la valeur. Souvenez-vous que vous devez configurer Azure Notification Hubs pour utiliser l’authentification basée sur les jetons afin de définir l’en-tête requis. Pour plus d’informations, consultez Authentification basée sur un jeton (HTTP/2) pour APNS.
Priorité APNS
Un autre changement mineur, mais qui nécessite une modification de l’application back-end qui envoie les notifications, concerne l’exigence selon laquelle, pour les notifications en arrière-plan, l’en-tête apns-priority
doit maintenant avoir la valeur 5. De nombreuses applications attribuent à l’en-tête apns-priority
la valeur 10 (indiquant une remise immédiate) ou ne la configurent pas et obtiennent la valeur par défaut (qui est également 10).
La définition de cette valeur sur 10 n’est plus autorisée pour les notifications en arrière-plan et vous devez définir cette valeur pour chaque demande. Apple n’effectuera pas la livraison des notifications en arrière-plan si cette valeur est manquante. Par exemple :
var hub = NotificationHubClient.CreateFromConnectionString(...);
var headers = new Dictionary<string, string> {{"apns-push-type", "background"}, { "apns-priority", "5" }};
var notification = new AppleNotification("notification text", headers);
await hub.SendNotificationAsync(notification);
Modifications du kit SDK
Pendant des années, les développeurs iOS ont utilisé l’attribut description
des données deviceToken
envoyées au délégué de jeton Push pour extraire le jeton Push qu’une application back-end utilise pour envoyer des notifications à l’appareil. Avec Xcode 11, cet attribut description
a été remplacé par un autre format. Le code que les développeurs utilisaient pour cet attribut est désormais interrompu. Nous avons mis à jour le kit SDK Azure Notification Hubs pour prendre en compte cette modification. Vous devez donc mettre à jour le kit SDK utilisé par vos applications vers la version 2.0.4 ou ultérieure du kit SDK iOS pour Azure Notification Hubs.