当设备再次可用时 APNS 推送不会重新发送,GCM 推送是

APNS pushes not re-sent when device becomes available again, GCM pushes are

我正在使用 Azure 通知中心向 iOS 和 Android 设备发送推送通知。当前,如果发送推送时设备不可用(例如,它没有信号或已关闭电源),那么在 iOS 上永远不会收到推送,而在 Android 设备上推送在设备再次可用后几秒钟内收到。

这是我在 NH 配置中控制的东西,还是由 Azure NH 内部管理的?

如果它由 NH 内部处理,有什么方法可以让我知道应用何时未成功接收推送并安排重新发送?

默认情况下,Azure NH 通过将 APNS 过期时间设置为零来发送通知(APNS 将通知视为立即过期并且不存储通知或尝试重新发送通知)但这在发送通知时是可配置的,使用这个 API:

public Task<NotificationOutcome> SendNotificationAsync(
    Notification notification
)

示例:

AppleNotification notification = new AppleNotification(jsonPayload, DateTime? expiry)

expiry 标识通知不再有效并可以丢弃的日期。

await SendNotificationAsync(notification)

您还可以通过模板设置有效期。

首先,您必须像这样创建注册。

AppleTemplateRegistrationDescription registration = new AppleTemplateRegistrationDescription(DeviceToken) 
{ 
    BodyTemplate = new CDataMember(ApnsBodyTemplate)
};
registration.Expiry = @"$(apnsexpirytime)";
await client.CreateRegistrationAsync(registration);

您可以使用 SendTemplateNotificationAsync API 像这样发送过期的苹果通知。

DateTime actualExpiryTime = DateTime.UtcNow.AddHours(1);
Dictionary<string, string> nameValuePairs = new Dictionary<string, string>();
// other template property values

nameValuePairs.Add("apnsexpirytime", actualExpiryTime.ToString("o"));
await client.SendTemplateNotificationAsync(nameValuePairs);