为什么 iOS 设备可能收不到来自 Azure 推送通知中心的推送通知?

Why iOS devices might not receive push notifications from Azure push notification hub?

问题

我想在 iOS 台设备上接收推送通知,这些设备是从我的网站 api 发送的,但从未收到推送通知。

从 API 发送的所有通知在 Azure 推送通知指标中显示为已成功发送,但设备未收到。

但是,如果通过测试发送从 Azure 推送通知中心发送推送通知,则可以成功发送和接收通知。

配置:

Web API 配置:
.NET 核心 2.2 网络 api
Nuget 从 Web api 发送推送通知:Microsoft.Azure.NotificationHubs
所有设备都注册为来自 Web api 端点的安装。

await _hubClient.CreateOrUpdateInstallationAsync(new Installation()
{
    Tags = installation.Tags,
    Platform = NotificationPlatform.Apns,
    PushChannel = installation.PushChannel,
    InstallationId = Guid.NewGuid().ToString()
});

本机方法用于发送推送通知。

var headers = new Dictionary<string, string>
{
    { "apns-push-type", "alert" },
    { "apns-priority", "5" }
};
var message = "{\"Aps\":{\"Alert\":\"Notification Hub test notification\"}}";
var tagExpression = newNotification.Tags.Aggregate((first, second) => $"{first} || {second}");
var notification = new AppleNotification(message, headers);
outcome = await _hubClient.SendNotificationAsync(notification, tagExpression, CancellationToken.None);

我也试过以下方法,但结果相同:

await _hubClient.SendAppleNativeNotificationAsync(newNotification.Content, tagExpression);

蔚蓝:
Azure 通知中心 Apple (APNS) 为生产环境配置了基于令牌的身份验证。

此外,我已经尝试过:

  1. Azure 推送通知中心的基于证书的身份验证;
  2. enableTestSend 以获得更好的调试体验。结果通知结果为"Success";
  3. 增加了到 S1 的 Azure 推送通知计划以获得更好的调试体验。结果通知结果也是"Success";
  4. 正在重新创建推送通知中心;
  5. 正在删除所有现有安装;
  6. 在 5 台不同的设备上完成了测试。

问题:

  1. 有什么方法可以在 Azure 通知中心之外调试未传送的推送通知吗?
  2. 在这种情况下,什么会导致推送通知未送达?

好的,我的问题很快就解决了:)

以防万一,有人想知道,APNS 模板中有错字。不是驼峰式的。
错误:

"{\"Aps\":{\"Alert\":\"Notification Hub test notification\"}}"

好:

"{\"aps\":{\"alert\":\"Notification Hub test notification\"}}"