我已經成功測試使用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。
我們所遵循的過程:
從蘋果開發者網站訪問導航到證書,標識&型材>標識符>應用ID
創建一個新的App-ID,並推送通知服務。
點擊創建一個新的生產SSL證書,然後在Mac上的本地鑰匙串中創建一個新的CSR文件,將其上傳到開發者站點(在證書生成過程中),然後下載生成的
.cer
文件。雙擊
.cer
文件將其添加到Mac上的鑰匙串。在這一點上,我們已經諮詢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文件,但很明顯,它不起作用。
我知道還有其他類似的問題,但答案如此廣泛,除了試錯之外,沒有真正的解決方案。我相信我的問題與不正確生成的證書具體相關,或者缺少一個步驟。
我想我正在接觸任何最近做過這件事的人,他們可以澄清所涉及的步驟。
謝謝
你是否按照驗證pem文件的步驟操作? 'openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert myapnsappcert.pem -key myapnsappprivatekey.pem' –
@Michael - sqlbot我的確是,但沒有改變任何東西。經過大量的試驗和錯誤,我得到了它的工作。我不認爲任何AWS建議的控制檯命令是必要的。 – Goodbytes