Azure Notification Hubs-updates voor iOS 13
Apple heeft onlangs enkele wijzigingen aangebracht in hun openbare pushservice; de wijzigingen zijn meestal afgestemd op de releases van iOS 13 en Xcode. In dit artikel wordt de impact van deze wijzigingen op Azure Notification Hubs beschreven.
Wijzigingen in APNS-pushpayload
APNS-pushtype
Apple vereist nu dat ontwikkelaars meldingen identificeren als een waarschuwing of achtergrondmeldingen via de nieuwe apns-push-type
header in de APNS-API. Volgens de documentatie van Apple: "De waarde van deze header moet nauwkeurig de inhoud van de nettolading van uw melding weerspiegelen. Als er een mismatch is of als de header ontbreekt op vereiste systemen, kan APNs een fout retourneren, de levering van de melding vertragen of helemaal verwijderen.
Ontwikkelaars moeten deze header nu instellen in toepassingen die meldingen verzenden via Azure Notification Hubs. Vanwege een technische beperking moeten klanten verificatie op basis van tokens gebruiken voor APNS-referenties met aanvragen die dit kenmerk bevatten. Als u op certificaat gebaseerde verificatie gebruikt voor uw APNS-referenties, moet u overschakelen naar op tokens gebaseerde verificatie.
De volgende codevoorbeelden laten zien hoe u dit headerkenmerk instelt in meldingsaanvragen die worden verzonden via Azure Notification Hubs.
Sjabloonmeldingen - .NET SDK
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);
Systeemeigen meldingen - .NET SDK
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);
Directe REST-aanroepen
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");
Wanneer Azure Notification Hubs een melding detecteert die niet apns-push-type
is ingesteld, wordt het pushtype afgeleid uit de meldingsaanvraag en wordt de waarde automatisch ingesteld om u tijdens deze overgang te helpen. Houd er rekening mee dat u Azure Notification Hubs moet configureren voor het gebruik van verificatie op basis van tokens om de vereiste header in te stellen. Zie Op tokens gebaseerde (HTTP/2) verificatie voor APNS voor meer informatie.
APNS-prioriteit
Een andere kleine wijziging, maar een die een wijziging vereist in de back-endtoepassing die meldingen verzendt, is de vereiste dat voor achtergrondmeldingen de apns-priority
header nu moet worden ingesteld op 5. Veel toepassingen stellen de apns-priority
header in op 10 (wat aangeeft dat de levering onmiddellijk is) of niet en krijgen de standaardwaarde (die ook 10 is).
Het instellen van deze waarde op 10 is niet langer toegestaan voor achtergrondmeldingen en u moet de waarde voor elke aanvraag instellen. Apple geeft geen achtergrondmeldingen als deze waarde ontbreekt. Bijvoorbeeld:
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);
SDK-wijzigingen
Jarenlang gebruikten iOS-ontwikkelaars het description
kenmerk van de deviceToken
gegevens die naar de gemachtigde van het pushtoken werden verzonden, om het pushtoken te extraheren dat een back-endtoepassing gebruikt om meldingen naar het apparaat te verzenden. Met Xcode 11 is dat description
kenmerk gewijzigd in een andere indeling. Bestaande code die ontwikkelaars voor dit kenmerk hebben gebruikt, is nu verbroken. We hebben de Azure Notification Hubs SDK bijgewerkt om deze wijziging mogelijk te maken. Werk daarom de SDK die door uw toepassingen wordt gebruikt bij naar versie 2.0.4 of hoger van de Azure Notification Hubs iOS SDK.