2

我想使用Amazon SNS Mobile Push NotificationsGCM結合使用來將通知推送到Android設備。使用亞馬遜SNS移動推送服務註冊移動端/ Android端點

我有GCM我的應用程序運行起來,它收到來自谷歌的註冊ID,可以收到通知,如果通過https://android.googleapis.com/gcm/send

    • 通知發送到設備手動添加該設備的註冊ID爲我的AWS/SNS項目中的移動端點。

    下一步是將設備註冊爲具有SNS服務的端點。 爲此,documentation建議:

    註冊從設備的令牌,將在 未來安裝的應用程序

    您可以使用以下兩種方法之一:

    使用Amazon Cognito服務:您的移動應用將需要憑據 才能創建與您的亞馬遜SNS平臺 應用關聯的終端。我們建議您使用 一段時間後過期的臨時憑證。對於大多數情況下,我們建議您使用Amazon Cognito創建臨時安全憑證 。有關 的更多信息,請參閱使用標識提供程序爲 移動應用程序創建臨時安全證書。如果您希望在應用程序註冊Amazon SNS時收到 的通知,您可以註冊以接收將提供新端點ARN的 Amazon SNS事件。您還可以使用ListEndpointByPlatformApplication API獲取在Amazon SNS上註冊的端點的完整列表 。

    使用代理服務器:如果您的應用程序 基礎設施已經爲您的移動應用,以 呼叫,並在每個安裝註冊後,您可以繼續使用 此設置。您的服務器將充當代理,並將設備令牌 傳遞給Amazon SNS移動推送通知以及您想要存儲的任何用戶數據。爲此,代理服務器將使用您的AWS憑證將 連接到Amazon SNS,並使用CreatePlatformEndpoint API調用來上傳令牌信息。將返回 新創建的端點亞馬遜資源名稱(ARN), 您的服務器可以存儲該亞馬遜資源名稱以進行後續發佈調用至 Amazon SNS。

    鑑於我不想使用代理服務器,但讓設備直接註冊SNS來創建移動端點(About Web Identity Federation),下面的假設是否正確?

    我要麼必須直接在應用程序中存儲用於訪問此AWS賬戶的憑證(當然不是選項),要麼用戶必須通過一些OpenID賬戶來識別自己(我也不想這樣做是因爲用戶不會僅僅爲了接收推送消息而識別自己)。

  • 回答

    2

    Ascorbin - 是的,你會想要使用Cognito Federated Identity。 Cognito身份允許您創建的臨時有限AWS憑據,從而使應用程序的用戶創建一個SNS平臺端點或訂閱的SNS主題沒有過記錄。你先create a Cognito Identity Pool和Cognito將分配兩個角色(AUTH & UNAUTH)到應用程序的最終用戶。

    在未經身份驗證的IAM角色中,您可以根據自己的用例爲sns:CreatePlatformEndpoint或sns:Subscribe授予權限。一旦你創建一個身份池在AWS控制檯,你會看到「示例代碼」爲Android實現在Android應用亞馬遜Cognito證書提供商。注意:創建身份池時,請不要忘記選擇「啓用對未經身份驗證的身份的訪問」,以便創建未經身份驗證的IAM角色,並且您的所有應用用戶可以在未登錄的情況下對AWS資源進行有限訪問。

    如果你想看到一個工作樣本Android應用程序,結賬AWS Mobile Hub並創建一個項目和下載/運行訪問使用Cognito認同您的AWS資源的Android示例應用程序。