Aracılığıyla paylaş


iOS 13 için Azure Notification Hubs güncelleştirmeleri

Apple kısa süre önce genel gönderim servislerinde bazı değişiklikler yaptı; değişiklikler çoğunlukla iOS 13 ve Xcode sürümleriyle hizalanır. Bu makalede, bu değişikliklerin Azure Notification Hubs üzerindeki etkisi açıklanmaktadır.

APNS anında iletme yükü değişiklikleri

APNS gönderme türü

Apple artık geliştiricilerin APNS API'sindeki yeni apns-push-type üst bilgi aracılığıyla bildirimleri uyarı veya arka plan bildirimleri olarak tanımlamasını gerektiriyor. Apple belgelerine göre: "Bu üst bilginin değeri, bildiriminizin yükünün içeriğini doğru şekilde yansıtmalıdır. Uyuşmazlık varsa veya gerekli sistemlerde üst bilgi eksikse, APN'ler hata döndürebilir, bildirimin teslimini geciktirebilir veya tamamen bırakabilir."

Geliştiricilerin artık Azure Notification Hubs aracılığıyla bildirim gönderen uygulamalarda bu üst bilgiyi ayarlaması gerekir. Teknik bir sınırlama nedeniyle, müşterilerin bu özniteliği içeren isteklerle APNS kimlik bilgileri için belirteç tabanlı kimlik doğrulaması kullanması gerekir. APNS kimlik bilgileriniz için sertifika tabanlı kimlik doğrulaması kullanıyorsanız belirteç tabanlı kimlik doğrulamasını kullanmaya geçmeniz gerekir.

Aşağıdaki kod örnekleri, Azure Notification Hubs aracılığıyla gönderilen bildirim isteklerinde bu üst bilgi özniteliğinin nasıl ayarlandığını gösterir.

Şablon bildirimleri - .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);

Yerel bildirimler - .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);

Doğrudan REST çağrıları

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

Bu geçiş sırasında size yardımcı olmak için, Azure Notification Hubs ayarlı olmayan apns-push-type bir bildirim algıladığında, hizmet bildirim isteğinden gönderme türünü çıkarsar ve değeri otomatik olarak ayarlar. Azure Notification Hubs'ı gerekli üst bilgiyi ayarlamak için belirteç tabanlı kimlik doğrulamasını kullanacak şekilde yapılandırmanız gerektiğini unutmayın; Daha fazla bilgi için bkz. APNS için belirteç tabanlı (HTTP/2) Kimlik Doğrulaması.

APNS önceliği

Bildirim gönderen arka uç uygulamasında değişiklik yapılmasını gerektiren bir diğer küçük değişiklik de arka plan bildirimleri apns-priority için üst bilginin artık 5 olarak ayarlanması gerektiğidir. Birçok uygulama üst bilgiyi 10 olarak ayarlar apns-priority (anında teslimi gösterir) veya ayarlamaz ve varsayılan değeri (10'da olur) alır.

Arka plan bildirimleri için bu değerin 10 olarak ayarlanmasına artık izin verilmiyor ve her istek için değeri ayarlamanız gerekiyor. Bu değer eksikse Apple arka plan bildirimleri sunmaz. Örnek:

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 değişiklikleri

iOS geliştiricileri yıllar boyunca, bir arka uç uygulamasının deviceToken cihaza bildirim göndermek için kullandığı anında iletme belirtecini ayıklamak için anında iletme belirteci temsilcisine gönderilen verilerin özniteliğini kullandıdescription. Xcode 11 ile bu description öznitelik farklı bir biçime değiştirildi. Geliştiricilerin bu öznitelik için kullandığı mevcut kod artık bozuk. Bu değişikliği karşılamak için Azure Notification Hubs SDK'sını güncelleştirdik, bu nedenle lütfen uygulamalarınız tarafından kullanılan SDK'yı Azure Notification Hubs iOS SDK'sının 2.0.4 veya daha yeni bir sürümüne güncelleştirin.