Atualizações dos Hubs de Notificação para o sistema iOS 13
A Apple fez recentemente algumas alterações no serviço de envio público; as alterações estão alinhadas principalmente com as versões do iOS 13 e do Xcode. Este artigo descreve o impacto dessas alterações nos Hubs de Notificação do Azure.
Alterações de conteúdo de push para APNS
Tipo de push APNS
Agora, a Apple exige que os desenvolvedores identifiquem notificações como um alerta ou notificações de segundo plano por meio do novo apns-push-type
cabeçalho na API do APNS. De acordo com a Documentação da Apple: "o valor desse cabeçalho deve refletir com precisão o conteúdo da carga da notificação. Se houver uma incompatibilidade ou se o cabeçalho estiver ausente nos sistemas necessários, o APNs poderá retornar um erro, atrasar a entrega da notificação ou abandoná-la completamente."
Os desenvolvedores agora devem definir esse cabeçalho em aplicativos que enviam notificações por meio dos Hubs de Notificação do Azure. Devido a uma limitação técnica, os clientes devem usar a autenticação baseada em token para credenciais de APNS com solicitações que incluem esse atributo. Se você estiver usando a autenticação baseada em certificado para suas credenciais do APNs, precisará alternar para o uso da autenticação baseada em token.
Os exemplos de código a seguir mostram como definir esse atributo de cabeçalho em solicitações de notificação enviadas por meio dos Hubs de Notificação do Azure.
Notificações de modelo-SDK do .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);
Notificações nativas-SDK do .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);
Direcionar chamadas REST
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");
Para te ajudar durante essa transição, quando os Hubs de Notificação do Azure detectam uma notificação que não tem o conjunto apns-push-type
, o serviço infere o tipo de push da solicitação de notificação e define o valor automaticamente. Lembre-se de que você deve configurar os hubs de notificação do Azure para usar a autenticação baseada em token para definir o cabeçalho necessário; para obter mais informações, consulte Autenticação baseada em token (HTTP/2) para APNS.
Prioridade de APNS
Outra alteração secundária, mas uma que requer uma alteração no aplicativo de back-end que envia notificações, é o requisito de notificações em segundo plano em que o apns-priority
cabeçalho agora deve ser definido como 5. Muitos aplicativos definem o apns-priority
cabeçalho como 10 (indicando entrega imediata) ou não os definem e obtêm o valor padrão (que também é 10).
Definir esse valor como 10 não é mais permitido para notificações em segundo plano e você deve definir o valor para cada solicitação. A Apple não fornecerá notificações em segundo plano se esse valor estiver ausente. Por exemplo:
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);
Alterações SDK
Durante anos, os desenvolvedores do iOS usaram o description
atributo dos deviceToken
dados enviados ao token de push delegado para extrair o token de push usado por um aplicativo de back-end para enviar notificações ao dispositivo. Com o Xcode 11, esse description
atributo foi alterado para um formato diferente. O código existente que os desenvolvedores usavam para este atributo está descartado atualmente. Atualizamos o SDK dos Hubs de Notificação do Azure para acomodar essa alteração. portanto, atualize o SDK usado por seus aplicativos para a versão 2.0.4 ou mais recente do SDK do iOS dos Hubs de Notificação do Azure.