Az Azure Notification Hubs frissítései iOS 13-hoz

Az Apple nemrég módosította a nyilvános leküldéses szolgáltatást; a módosítások többnyire az iOS 13 és az Xcode kiadásához igazodnak. Ez a cikk a módosítások Azure Notification Hubsra gyakorolt hatását ismerteti.

AZ APNS leküldéses hasznos adat módosításai

APNS leküldéses típus

Az Apple most megköveteli, hogy a fejlesztők riasztásként vagy háttérértesítésként azonosítják az értesítéseket az APNS API új apns-push-type fejlécén keresztül. Az Apple dokumentációja szerint: "A fejléc értékének pontosan tükröznie kell az értesítés hasznos adatainak tartalmát. Ha eltérés van, vagy ha a fejléc hiányzik a szükséges rendszereken, az APN-k hibát jelezhetnek, késleltethetik az értesítés kézbesítését, vagy teljesen elvethetik."

A fejlesztőknek most már be kell állítaniuk ezt a fejlécet olyan alkalmazásokban, amelyek értesítéseket küldenek az Azure Notification Hubson keresztül. Technikai korlátozás miatt az ügyfeleknek jogkivonatalapú hitelesítést kell használniuk az APNS hitelesítő adataihoz az attribútumot tartalmazó kérésekkel. Ha tanúsítványalapú hitelesítést használ az APNS hitelesítő adataihoz, jogkivonatalapú hitelesítésre kell váltania.

Az alábbi kódminták bemutatják, hogyan állíthatja be ezt a fejlécattribútumot az Azure Notification Hubson keresztül küldött értesítési kérelmekben.

Sablonértesítések – .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);

Natív értesítések – .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);

Közvetlen REST-hívások

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");

Ha segíteni szeretne ebben az áttűnésben, amikor az Azure Notification Hubs olyan értesítést észlel, amely nem rendelkezik a apns-push-type beállított értékkel, a szolgáltatás az értesítési kérelem leküldéses típusát következteti, és automatikusan beállítja az értéket. Ne feledje, hogy a szükséges fejléc beállításához konfigurálnia kell az Azure Notification Hubsot jogkivonatalapú hitelesítés használatára; további információt az APNS tokenalapú (HTTP/2) hitelesítése című témakörben talál.

APNS-prioritás

Egy másik kisebb módosítás, amely azonban az értesítéseket küldő háttéralkalmazás módosítását igényli, az a követelmény, hogy a háttérértesítésekhez a apns-priority fejlécet most 5-ösre kell állítani. Sok alkalmazás a apns-priority fejlécet 10-re állítja (ami azonnali kézbesítést jelez), vagy nem állítja be, és nem kapja meg az alapértelmezett értéket (ami szintén 10).

Ha ezt az értéket 10-re állítja, akkor a háttérértesítések már nem használhatók, és minden egyes kéréshez be kell állítania az értéket. Ha ez az érték hiányzik, az Apple nem küld háttérértesítéseket. Például:

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-módosítások

Az iOS-fejlesztők évek óta a descriptiondeviceToken leküldéses jogkivonat-delegáltnak küldött adatok attribútumával nyerték ki azt a leküldéses jogkivonatot, amelyet egy háttéralkalmazás az értesítések eszközre való küldéséhez használ. Az Xcode 11 esetében ez az description attribútum más formátumra változott. A meglévő kód, amelyet az attribútumhoz használt fejlesztők használnak, most megszakadt. A módosításnak megfelelően frissítettük az Azure Notification Hubs SDK-t, ezért frissítse az alkalmazások által használt SDK-t az Azure Notification Hubs iOS SDK 2.0.4-es vagy újabb verziójára.