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

时间:2016-05-25 11:56:02

标签: c# azure google-cloud-messaging apple-push-notifications azure-notificationhub

我正在使用Azure通知中心向iOS和Android设备发送推送通知。目前,当发送推送时设备不可用(例如,它没有信号或关闭电源),然后在iOS上从未接收到推送,而在Android设备上,在设备成为几秒钟内接收推送再次可用。

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

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

1 个答案:

答案 0 :(得分:1)

默认情况下,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);