簡體   English   中英

無法設置一個 AWS SNS 以同時服務於開發 (APNS_SANDBOX) 和生產 (APNS)

[英]Fail to setup one AWS SNS to serve both development (APNS_SANDBOX) and production (APNS)

也許這不受 AWS 支持,但是,在 Apple Developer Console 上創建認證時,我選擇了“Apple Push Notification service SSL (Sandbox & Production)”。 我用這個認證來建立一個 SNS。 如果我選中“用於沙箱中的開發”復選框,通知將在通過 XCODE 而不是通過 testflight 編譯應用程序時起作用,如果我使用此認證並取消選中此復選框,則通知將從 testflight 起作用,但從 XCODE 起作用。

我的印象是這種新型認證可以用於開發和生產,所以我有點困惑。 AWS 似乎知道我的應用程序是為開發還是生產而編譯的。

有沒有辦法在 iOS 上建立一個 SNS 用於開發和生產?

我今天剛剛和我的 AWS 團隊一起經歷了這件事。 (我是 iOS 開發人員,如果我沒有使用正確的 AWS 術語,請原諒我。希望它足夠接近。)

新證書可用於沙盒和生產。 但是,必須為每個端點創建一個 AWS SNS 端點 (ARN?)。 正如您所說,如果您選中“用於沙盒中的開發”復選框,它將在從 Xcode 運行時開始工作,但它不適用於 TestFlight 應用程序。 這是非此即彼的,不是兩者兼而有之。

要使其正常工作,您需要創建兩個SNS 端點。 您可以為兩個端點使用相同的“Apple 推送通知服務 SSL(沙盒和生產)”APNS 證書,但僅在其中一個中選中“用於沙盒中的開發”。

我不知道這是否適用於您的情況,但對於我的應用程序,我們的 AWS 團隊在我們的設備注冊 API 中添加了一個“開發”標志,以便他們最終區分是將通知發送到 APNS 還是 APNS_SANDBOX 端點。

對於可能需要更多說明的任何人,我將嘗試解釋您可能遇到的問題,然后是解決方案。

問題陳述:

  1. 您為 Apple iOS/VIOP/MacOS 創建了一個 AWS SNS 平台應用程序並勾選了“用於沙盒中的開發”。

  2. 您最終會得到一個字符串中某處包含“APNS_SANDBOX”的 arn。

  3. 然后,您使用平台 arn 來注冊設備端點。 請注意,這些設備是使用 Xcode(調試/發布)構建的,而不是 App Store 上的那個。

  4. 它有效,正在發送通知。

  5. 然后,您將您的應用程序發布到 App store 或 TestFlight,並突然注意到沒有發送通知。

  6. 最重要的是,您注意到您的端點狀態顯示為已禁用,現在您想知道為什么您的村民今天決定找您麻煩。

解決方案:

  1. 您需要創建另一個 AWS SNS 平台應用程序,但這次不要勾選“用於沙箱中的開發”

  2. 確保使用與沙箱相同的名稱或不同的名稱。 主要區別在於端點中的 APNS_SANDBOX 或 APNS。

  3. 現在將 go 放入您的代碼中,並將僅包含 APNS 的 arn 用於您提交到 App Store 的應用程序。

干杯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM