2017-04-09 88 views
0

我有一個簡單的信使組件的應用程序。當user1向user2發送消息時,我正在使用Azure通知集線器向user2發送推送通知。由於我使用的通知集線器用於推送通知註冊用戶的設備,我不知道哪個手機操作系統的他們與註冊,所以只排了每種類型的通知我支持:如何判斷推送通知是否在Azure NotificationHubs中成功傳遞?

NotificationOutcome outcome1 = await hub.SendAppleNativeNotificationAsync(jsoniOSPayload, tags); 
NotificationOutcome outcome2 = await hub.SendGcmNativeNotificationAsync(jsonAndroidPayload, tags); 
...(etc.) 

然而,我們需要以處理應用程序已被刪除的情況。發生這種情況時,如果推送通知無法發送到任何設備,我們需要向用戶發送電子郵件。

我的問題是:如何知道是否至少有一個通知已成功傳遞給用戶設備?我知道NotificationHubClient.EnableTestSend屬性,它確實會導致NotificationOutcome對象成功計數。這將很好地工作,但documentation表示這不會是生產最佳:

「啓用測試發送,將出現以下情況:所有通知 只可達每10設備發送的call.The發送*方法 返回所有這些通知傳送的結果列表 可能的結果與遙測中顯示的結果相同結果 包括認證錯誤,調節錯誤,成功交付等問題。此模式適用於僅用於測試目的, 不適用於生產,並且受到限制。「

任何建議,將不勝感激!

回答

1

如何判斷是否至少有一條通知已成功傳遞給用戶設備?

正如您所提到的,NotificationHubClient.EnableTestSend用於調試並限制爲10個設備。 如果想獲得成功發貨的數量,我們可以使用功能NotificationHubClient.GetNotificationOutcomeDetailsAsync(string notificationId),更多詳情請參考document

演示代碼:

NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString("Endpoint=sb://notificationnamespace.servicebus.windows.net/;SharedAccessKeyName=DefaultFullSharedAccessSignature;SharedAccessKey=xxxxxxx", "NotificationHub Name"); 
string message = "{\"title\":\"((Notification title))\",\"description\":\"Hello from Azure\"}"; 
      var result = await hub.SendGcmNativeNotificationAsync(message); //GCM for example. 
      var notificationDetails = await hub.GetNotificationOutcomeDetailsAsync(result.NotificationId); 
      return notificationDetails; 

enter image description here

注意:這僅僅是標準定價等級。

+0

我認爲不使用標準定價淚是我的問題。我試圖在某個地方找到通知ID,但對於較低的層次,似乎該值不在響應中。感謝您的回覆! – lehn0058

相關問題