1

我已經成功測試使用SNS向Apple設備發送推送通知,目前在Xcode中使用APNS_SANDBOX發送推送通知。從Amazon SNS(APNS Production)獲取「EndpointDisabled」

我們現在已準備好轉入生產階段,並且正在獲得在APNS(生產)應用程序端點上正確設置證書的絕對惡夢。

我遵循我們在開發過程中所遵循的相同過程,並諮詢了多個指南。

每次我們嘗試推送通知發送給我們得到以下故障通知的設備:

{"DeliveryAttempts":1,"EndpointArn":"arn:aws:sns:eu-west-1:123456789:endpoint/APNS/Name/e591d1a1-8db3-3382-8091-ab1a3cb3cac5","EventType":"DeliveryFailure","FailureMessage":"Endpoint is disabled","FailureType":"EndpointDisabled","MessageId":"08a70f95-773c-58fb-a6f9-5df1650eeb19","Resource":"arn:aws:sns:eu-west-1:123456789:app/APNS/Name","Service":"SNS","Time":"2017-10-20T15:02:10.824Z"}

我理解這可能涉及到幾個問題,但很可能與上傳到證書有問題SNS。

我們所遵循的過程:

  1. 從蘋果開發者網站訪問導航到證書,標識&型材>標識符>應用ID

  2. 創建一個新的App-ID,並推送通知服務。

  3. 點擊創建一個新的生產SSL證書,然後在Mac上的本地鑰匙串中創建一個新的CSR文件,將其上傳到開發者站點(在證書生成過程中),然後下載生成的.cer文件。

  4. 雙擊.cer文件將其添加到Mac上的鑰匙串。

  5. 在這一點上,我們已經諮詢http://docs.aws.amazon.com/sns/latest/dg/mobile-push-apns.html文檔這表明運行下面的命令:

openssl x509 -in myapnsappcert.cer -inform DER -out myapnsappcert.pem

  • 回到內部鑰匙扣選擇鍵,突出顯示應用程序私鑰並將其導出.p12文件。

  • 回到命令提示符下,根據AWS文檔運行以下命令:openssl pkcs12 -in myapnsappprivatekey.p12 -out myapnsappprivatekey.pem -nodes -clcerts以生成另一個.pem文件。

  • 亞馬遜接着說:

    新創建的.pem文件將用於配置亞馬遜SNS發送手機推送通知消息。

    這使我相信文檔已經過時的.pem文件上傳到SNS APNS應用程序憑據管理器返回一個錯誤,指出它無法讀取該文件。

    按照SNS憑據管理器的應用APNS,它只接受.p12文件......如果是這樣的話,爲什麼需要創建最終.pem文件?這一步仍然需要?我錯過了一個步驟?

    無論如何,我上傳了最終的.p12文件,但很明顯,它不起作用。

    我知道還有其他類似的問題,但答案如此廣泛,除了試錯之外,沒有真正的解決方案。我相信我的問題與不正確生成的證書具體相關,或者缺少一個步驟。

    我想我正在接觸任何最近做過這件事的人,他們可以澄清所涉及的步驟。

    謝謝

    +0

    你是否按照驗證pem文件的步驟操作? 'openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert myapnsappcert.pem -key myapnsappprivatekey.pem' –

    +0

    @Michael - sqlbot我的確是,但沒有改變任何東西。經過大量的試驗和錯誤,我得到了它的工作。我不認爲任何AWS建議的控制檯命令是必要的。 – Goodbytes

    回答

    1

    經過大量的試驗和錯誤,我設法讓它工作。我不確定AWS文檔是否過時,但肯定是過度殺手。

    這裏所說:

    1. 從蘋果開發者網站的訪問瀏覽到證書,標識&配置文件>標識>應用ID

    2. 創建一個新的應用程序ID並啓用推送通知服務。

    3. 點擊創建一個新的生產SSL證書,然後在Mac上的本地鑰匙串中創建一個新的CSR文件,將其上傳到開發者站點(在證書生成過程中),然後下載生成的.cer文件。

    4. 雙擊.cer文件將其添加到Mac上的鑰匙串。

    5. 打開鑰匙串,選擇「我的證書」突出顯示在第3步中添加的證書,可能以「Apple推送服務」開頭。

    6. 右鍵單擊證書並導出它(擴展名爲.p12)。如果它要求您設置密碼,您可以留空。

    7. 在AWS SNS中,導航到應用程序,單擊您的APNS應用程序(或添加一個新應用程序)。在「平臺應用程序操作」下,點擊更新憑據並上傳您導出的.p12文件。

    8. 最後,單擊「從文件加載憑據」並更新以退出應用程序設置。

    9. 在您的應用中享受推送通知。

    這爲我工作,我不知道爲什麼AWS文檔建議的命令來轉換文件,它看起來像他們是沒有必要的,造成很大的混亂。

    希望這是別人。