-1
.

Ich verwende den Azure Notification Hub, um Push-Benachrichtigungen an iOS- und Android-Geräte zu senden. Derzeit, wenn ein Gerät nicht verfügbar ist, wenn der Push gesendet wird (entweder hat es kein Signal oder ist ausgeschaltet), dann auf iOS wird der Push nie empfangen, während auf einem Android-Gerät der Push innerhalb von Sekunden empfangen wird, nachdem das Gerät wird wieder verfügbar.APNS-Pushs werden nicht erneut gesendet, wenn das Gerät wieder verfügbar ist. GCM-Push-Nachrichten sind

Ist das etwas, das ich in der NH-Konfiguration kontrolliere, oder wird es intern vom Azure NH geregelt?

Wenn es intern von NH gehandhabt wird, kann ich irgendwie wissen, wann ein Push nicht erfolgreich von der App empfangen wurde und ihn erneut senden lassen?

Antwort

1

Standardmäßig sendet Azure NH Benachrichtigungen, indem der APNS-Ablauf auf Null gesetzt wird (APNS behandelt die Benachrichtigung so, als ob sie sofort abläuft und die Benachrichtigung nicht speichert oder versucht, sie erneut zu senden), dies ist jedoch beim Senden von Benachrichtigungen konfigurierbar API:

public Task<NotificationOutcome> SendNotificationAsync(
    Notification notification 
) 

Beispiel:

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

expiry identifiziert den Zeitpunkt, wenn die Meldung nicht mehr gültig ist und verworfen werden kann.

await SendNotificationAsync(notification) 

Sie können den Ablauf auch über Vorlagen festlegen.

Zuerst müssen Sie Registrierung wie folgt erstellen.

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

können Sie verwenden SendTemplateNotificationAsync API Apfel Benachrichtigung mit Ablauf wie folgt zu senden.

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); 
+0

Danke für den Vorschlag, aber ich verwende Templating, so dass der Azure NH verantwortlich für die Bestimmung der Zielplattform und Senden der Push-Payload im richtigen Format ist. Um dies zu erreichen, benutze ich 'SendTemplateNotificationAsync()', das einfach ein IDictionary und eine Zeichenkette, keine 'Notification' Klasse irgendeines Typs, deshalb kann ich kein Ablaufdatum angeben. Dies scheint im Azure NH SDK ein großes Versehen zu sein. –

+0

Ich musste die Verwendung von Vorlagen aufgeben und die von Ihnen erwähnte Methode aus diesem Grund verwenden. Dies scheint jedoch bei der Verwendung von Vorlagen in ANH ein sehr großes Versehen zu sein. –