1

我有兩個通知中心客戶端(nodejs和C#),都用於推送消息到集線器。通知中心傳遞失敗C#

節點客戶端發送完美,但C#客戶端完成沒有消息正在發送。

下面是用於每個客戶端的片段。

C#

NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString("<Connection String>", "<Hub Name>"); 
var notice = @"{'aps':{'alert':'Notification Hub test notification'}}"; 
var result = await hub.SendAppleNativeNotificationAsync(notice, "<tag>"); 
Console.WriteLine(result.State); 

的NodeJS

var azure = require('azure'); 
var notificationHubService = azure.createNotificationHubService('<Hub Name>','<Connection String>') 
var notice = "{'aps':{'alert':'Notification Hub test notification'}}" 
notificationHubService.apns.send("<tag>", notice, function(error, res){ 
    console.log(res); 
}); 

發送Android的通知和消息直接從Azure的門戶測試功能發送時都工作得不錯的罰款。

任何援助將不勝感激。

回答

0

鄧肯,

我認爲這個問題是因爲你的有效載荷是畸形的,你是使用單引號。請嘗試以下操作:

var notice = "{\"aps\":{\"alert\":\"Notification Hub test notification\"}}"; 
+0

我檢查了這一點,有效負載是有效的,結果的狀態是「入隊」。如果我有目的地對有效載荷進行格式化,我會得到「(400)錯誤請求,提供的通知載荷無效」。 –

+0

@Duncan一旦發送通知,你的設備註冊是否被丟棄? –

+0

不通知通知中心上的註冊仍然存在,我仍然可以從節點客戶端推送。 –

0

你可以嘗試使用EnableTestSend功能,並期待在NotificationOutcome屬性爲詳細的錯誤信息。這將向10個設備發送測試發送消息。

bool enableTestSend = true; 
NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString(connString, hubName, enableTestSend); 

var outcome = await hub.SendWindowsNativeNotificationAsync(toast); 
Console.WriteLine(outcome.State); 

foreach (RegistrationResult result in outcome.Results) 
{ 
    Console.WriteLine(result.ApplicationPlatform + "\n" + result.RegistrationId + "\n" + result.Outcome); 
} 
+0

我已經用測試標誌運行集線器,並且結果沒有差異。發送後的狀態是「已入隊」,但不會傳送。 –

0

TLDR - 無''(單引號)允許的!有效載荷必須containt alert關鍵

不是一個非常令人興奮的解決方案,但...

  • 如果通知有效載荷包含即使在字符串單引號的文字通知中心將EN-排隊它沒有一個畸形的異常,但當它到達APNS時,它將不會被傳送,因爲根據它們有效載荷是無效的。
  • 如果通知有效載荷沒有alert關鍵目前它也將入隊,但不是由APNS交付
0

正如我的同事們的答案已經提到的,你需要使用C#雙引號第一步。

其次,你還需要躲避JSON字符: 你的有效載荷應該是這樣的:

var notice = "{{\"aps\":{{\"alert\":\"Notification Hub test notification\"}}}}"; 

基本上可以通過添加其他的人逃脫JSON括號{} {{}}。

這將發送一個有效的JSON負載到SendAppleNativeNotificationAsync()方法。現在發送的有效載荷是這樣的:

{「APS」:{「警告」:「通知中心測試通知」}}(這是iOS上的正確通知格式)

這裏距離是valid json payloads for iOS Apple開發人員網頁。

您可以隨時使用正在使用的Azure通知中心中的「測試發送」功能測試您發送的json是否爲有效通知有效內容。