为什么 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) 为生产环境配置了基于令牌的身份验证。
此外,我已经尝试过:
- Azure 推送通知中心的基于证书的身份验证;
- enableTestSend 以获得更好的调试体验。结果通知结果为"Success";
- 增加了到 S1 的 Azure 推送通知计划以获得更好的调试体验。结果通知结果也是"Success";
- 正在重新创建推送通知中心;
- 正在删除所有现有安装;
- 在 5 台不同的设备上完成了测试。
问题:
- 有什么方法可以在 Azure 通知中心之外调试未传送的推送通知吗?
- 在这种情况下,什么会导致推送通知未送达?
好的,我的问题很快就解决了:)
以防万一,有人想知道,APNS 模板中有错字。不是驼峰式的。
错误:
"{\"Aps\":{\"Alert\":\"Notification Hub test notification\"}}"
好:
"{\"aps\":{\"alert\":\"Notification Hub test notification\"}}"
问题
我想在 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) 为生产环境配置了基于令牌的身份验证。
此外,我已经尝试过:
- Azure 推送通知中心的基于证书的身份验证;
- enableTestSend 以获得更好的调试体验。结果通知结果为"Success";
- 增加了到 S1 的 Azure 推送通知计划以获得更好的调试体验。结果通知结果也是"Success";
- 正在重新创建推送通知中心;
- 正在删除所有现有安装;
- 在 5 台不同的设备上完成了测试。
问题:
- 有什么方法可以在 Azure 通知中心之外调试未传送的推送通知吗?
- 在这种情况下,什么会导致推送通知未送达?
好的,我的问题很快就解决了:)
以防万一,有人想知道,APNS 模板中有错字。不是驼峰式的。
错误:
"{\"Aps\":{\"Alert\":\"Notification Hub test notification\"}}"
好:
"{\"aps\":{\"alert\":\"Notification Hub test notification\"}}"