Share via


偵錯通知中樞

本節描述對使用 Azure 通知中樞的解決方案進行偵錯的一些秘訣。

偵錯推播通知可能是一項挑戰,因為牽涉到許多系統:您的裝置應用程式、後端、平臺通知系統,以及最有可能的推播通知服務,例如 Azure 通知中樞。 在典型的案例中,利用正確的推播認證設定您的通知中輸、利用平台通知系統和中樞註冊您的裝置應用程式,最後再更新您的後端以傳送通知,都需要費點功夫。 因為這類架構的複雜度,很有可能導致錯誤或失敗,接著造成裝置沒有收到通知。 很幸運地,有數個工具對偵錯您的推播通知組態很有幫助。

  • Azure 管理入口網站

  • Visual Studio 伺服器總管

  • 服務匯流排總管

Azure 管理入口網站

您可以使用 Azure 管理入口網站監視通知和註冊的狀態,並且傳送測試通知。 您可以在通知中樞的 [偵錯] 索引標籤中存取這項功能,如下所示:

Portal

您可以使用範本) 來指定傳送測試通知時要使用的推播通知服務:Windows Phone、Windows、iOS、Android或自訂 (。 您可以傳送隨機測試通知,或將測試通知傳送至一組特定的註冊。 若要傳送測試推送通知,請在 [偵錯] 索引標籤上設定必要參數,然後按一下畫面底部的 [傳送]

Visual Studio 伺服器總管

Visual Studio 中的伺服器總管會連接到您的 Microsoft Azure 訂用帳戶,您可以從 Visual Studio IDE 開始始用您的 Azure 服務。 連接時,您可以對通知中樞執行一些有限的測試和偵錯。 在 Visual Studio 中測試您的應用程式時,Visual Studio 中的偵錯會格外方便。 從 Visual Studio,您可以檢閱現有的推播通知註冊以了解指定的通知中樞。 您也可以將測試訊息傳送至已註冊的裝置,以測試您的通知中樞組態。

若要診斷 Visual Studio 中的通知中樞,請展開 Azure 底下伺服器總管中的 [通知中樞] 節點,然後以滑鼠右鍵按一下中樞名稱並按一下 [診斷]。

提示

直接從 Visual Studio 瀏覽到 Azure 管理入口網站,以滑鼠右鍵按一下伺服器總管中的中樞名稱,然後按一下 [在管理入口網站中開啟]。

以下是 [裝置註冊] 診斷索引標籤,會顯示現有的註冊:

Existing notification hub registrations

當您有大量的註冊時,您可以同時根據標籤篩選清單並根據資料行排序清單。 您也可以選取現有的註冊,然後按一下編輯標籤圖示,以編輯現有註冊的標籤。

以下是 [測試傳送] 診斷索引標籤,可讓您將測試訊息傳送到現有的註冊:

Visual Studio Notification Hubs test send

您可以隨機傳送通知給用戶端註冊 (廣播),或是只傳送給具有特定標籤的註冊。 使用這項測試功能時,Visual Studio 保證收到測試通知的用戶端不會超過 10 個,且測試的結果會顯示在 [訊息結果] 資料表中。 這與在NotificationHubClient API 上將EnableTestSend設定為true相同。

當您選擇訊息類型時,會針對選取的平台和推播通知類型產生格式正確的測試訊息。

和通知中樞相關的其他資訊,包括組態狀態、連接字串資訊,以及註冊存留時間 (TTL) 都會顯示在 [屬性] 視窗中。 TTL 會以 PxxDTyyH的序列化日和小時格式顯示,其中 xx 是天, 而 yy 是小時,預設的 90 天註冊為 P90D

服務匯流排總管

您也可以使用「服務匯流排總管」(Service Bus Explorer) 工具來協助偵錯程序。 您可以在這裡下載服務匯流排總管。 這項工具可讓您探索目前已向通知中樞註冊的裝置。 您也可以使用服務匯流排總管傳送測試通知。 您可以利用 Azure SDK 和 .NET 用戶端程式庫執行所有工作,也可以透過 REST 執行,但此工具可以讓偵錯程序更容易。 如需 服務匯流排 Explorer 的快速簡介,請參閱這段影片

當您啟動服務匯流排總管時,請使用您的 ACS 連接字串將它連接到您的命名空間,而非使用您的中樞連接字串 (您用於您的應用程式和後端)。 例如:

Connection String

下列是針對使用通知中樞的解決方案進行偵錯時的實用工作:

  1. 請確定裝置已利用中樞正確註冊。 若要這樣做,您可以取得中樞的所有註冊,並檢查註冊的存在是否具有正確的 PNSHandle (例如,ChannelURI、裝置權杖或 registrationId) 以及一組正確的標籤。 在服務匯流排總管中,在左邊選取您的通知中樞,然後使用底部的 [註冊] 按鈕查詢註冊。 用戶端應用程式中的程式碼應該提供註冊。 例如:

    Service Bus Explorer

  2. 如果您有註冊,請確定您在傳送訊息時有取得「成功」結果 (您可以立即在服務匯流排總管中看到結果,不用等待入口網站儀表板更新)。 如果您收到任何其他結果,請參閱 此 MSDN 主題 ,以協助瞭解此處大部分問題 (與中樞和/或用戶端應用程式中的認證設定相關) 。

    Service Bus Explorer 如需結果的每個平臺描述,請參閱 計量 主題。

  3. 如果平台通知服務傳回成功,就表示您的通知中樞成功地將您的通知傳遞到平台通知系統。 如果它仍未顯示,通常是因為每個平台特有的特性。 例如:

    • 在 iOS 中,如果您的應用程式正在執行 (即使是在背景),它就會擷取您的通知。 若要顯示通知,您必須在您的 application:didReceivePushNotification: 類別中實作 AppDelegate 方法。 此外,如果您的 json 裝載不正確,APNS 會接受通知但裝置將不會顯示任何項目。

    • 在 Windows Phone 中,如果您的應用程式是在幕前,將不會顯示快顯通知。

    • 在 Android 中,請確定您的廣播接聽程式已正確設定,而且權限已設定在適當封裝的資訊清單中。

最後,請檢查您是否已註冊通知中樞並將相同類型的通知傳送至通知中樞。 如果您註冊了範本,您必須傳送範本通知。 如果您註冊原生通知,您必須將原生通知傳送至正確的平台。

結果代碼

當您從入口網站或服務匯流排總管傳送測試通知時,傳回的結果會是成功或失敗。 下表列出可能的結果和它們的意義:

結果類別 描述

Success

通知已成功傳遞到 PNS。

Throttled

PNS 並未接受通知,因為相關聯的認證已進行節流處理。

ChannelThrottled

PNS 並未接受通知,因為目標通道 (ChannelUri、裝置權杖...) 正在進行節流。

ChannelDisconnected

PNS 並未接受通知,因為通道目前中斷連線。

Dropped

PNS 並未接受通知,因為通道佇列已滿。

PNS 問題

PnsUnreachable

無法連接到 PNS。

PnsInterfaceError

與 PNS 服務匯流排 介面發生錯誤。

PnsServerError

PNS 回報內部錯誤。

PnsUnavailable

PNS 回報服務目前無法使用。

PNS 驗證問題

TokenProviderUnreachable

如果連絡 PNS (例如 WNS) 之前必須取得授權權杖,卻無法連繫服務來取得權杖,就會發生此錯誤。

注意:當認證錯誤時,這不是結果。

TokenProviderInterfaceError

與權杖提供者服務服務匯流排介面發生錯誤。

InvalidCredentials

註冊中指定的認證不存在、遭到封鎖,或服務匯流排無法使用它們成功 ( (,PNS 拒絕它們,或提供授權權杖的服務拒絕他們) 。

InvalidToken

如果連絡 PNS (例如 WNS) 之前必須取得授權權杖,PNS 卻拒絕權杖,就會發生此錯誤。

WrongToken

提供給 PNS 的權杖有效,但不授與任何權限給指定的 PNShandle。

PNSHandle 問題

BadChannel

PNS 無法辨識提供的 PNShandle 為有效的 PNShandle。

ExpiredChannel

PNS 可以辨識 PNSHandle,但 PNShandle 已不再有效。

WrongChannel

PNS 可辨識此控制代碼,但該控制代碼對目前的通知無效。

要求問題

InvalidNotificationFormat

PNS 會指出通知格式的相關錯誤。

注意:如果提供的範本格式不正確,或將範本套用至傳入訊息的結果會導致格式不正確的通知,就會發生這種情況。

InvalidNotificationSize

PNS 會指出通知大小的相關錯誤。

注意:如上所述。