Xamarin 的AWS行動 SDK 現在已包含在AWS SDK for .NET. 本指南參考 Xamarin 行動 SDK 的封存版本。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 SNS 接收推送通知
本文檔介紹如何使用 Amazon Simple Notification Service (SNS) 和適用於 .NET 和 Xamarin 的 AWS 移動軟件開發工具包向 Xamarin iOS 應用程序發送推送通知。
項目設定
先決條件
您必須完成設定適用於 .NET 和 Xamarin 的 AWS Mobile SDK,然後再開始本教程。
設定 SNS 的許可
按照步驟 2設定適用於 .NET 和 Xamarin 的 AWS Mobile SDK將下面提到的策略附加到應用程序的角色。這將為您的應用程序授予訪問 SNS 的適當權限:
-
前往IAM 主控台
並選擇您想要配置的 IAM 角色。 -
按一下連接政策下,選擇卓越亞馬遜 SNFullAccess策略,然後單擊連接政策。
警告
使用卓越亞馬遜 SNFullAccess不建議在生產環境中使用。我們在此使用它來幫助您快速啟動並執行。如需有關指定 IAM 角色的許可的詳細資訊,請參IAM 角色許可概觀。
獲得蘋果 iOS 開發者計劃的會員資格
您需要在物理設備上運行應用程序才能接收推送通知。要在設備上運行應用程序,您必須在蘋果 iOS 開發者計劃會員
創建 iOS 證書
首先,您需要建立 iOS 憑證。然後,您需要創建一個配置為推送通知配置的置備配置文件。作法:
-
前往蘋果開發者會員中心
下,按一下證書、標識符和配置文件。 -
按一下識別碼下iOS 應用程式,請單擊網頁右上角的加號按鈕以添加新的 iOS 應用程序 ID,然後輸入應用 ID 描述。
-
向下捲動到新增 ID 後綴部分,然後選擇明確應用程式 ID並輸入捆綁標識符。
-
向下捲動到應用程式服務部分,然後選擇推送通知。
-
按一下 Continue (繼續)。
-
請按 Submit (提交)。
-
按一下完成。
-
選擇剛剛創建的應用程序 ID,然後單擊Edit (編輯)。
-
向下捲動到推送通知區段。按一下建立憑證下開發 SSL 憑證。
-
按照説明創建證書簽名請求 (CSR)、上傳請求並下載將用於與 Apple 通知服務 (APNS) 通信的 SSL 證書。
-
返回證書、標識符和配置文件(憑證已建立!) 頁面上的名稱有些許差異。按一下All (全部)下設定檔。
-
單擊右上角的加號按鈕以添加新的配置文件。
-
選擇iOS 應用程式開發,然後按一下Continue。
-
選擇您的應用程式 ID,然後按一下Continue。
-
選擇您的開發者憑證,然後按一下Continue。
-
選取您的設備,然後按一下Continue。
-
輸入配置式名稱,然後按一下Generate。
-
下載並雙擊置備文件以安裝置配置文件。
有關置備為推送通知配置的配置文件的詳細信息,請參閲 Apple 的配置推播通知
使用證書在 SNS 控制台中創建平台 ARN
-
執行KeyChain訪問應用程序,選擇我的憑證,然後右鍵單擊您生成的 SSL 證書以連接到 APNS,然後選擇匯出。系統將提示您指定文件的名稱和密碼以保護證書。證書將保存在 P12 文件中。
-
前往SNS 控制台
,然後按一下應用程式位於屏幕左側。 -
按一下建立平台應用程式建立新 SNS 平台應用程式。
-
輸入應用程式名稱。
-
選擇Apple 開發為了推播通知平台。
-
按一下選取檔案,然後選擇導出 SSL 證書時創建的 P12 文件。
-
輸入您導出 SSL 證書時指定的密碼,然後單擊從檔案載入憑證。
-
按一下建立平台應用程式。
-
選擇剛剛創建的平台應用程序並複製應用程序 ARN。您在接下來的步驟中需要此資訊。
AddNuGetSNS 軟件包到您的項目
請按照設定適用於 .NET 和 Xamarin 的 AWS Mobile SDK新增亞馬遜簡單通知服務NuGet軟件包添加至您的項目。
建立 SNS 客户端
var snsClient = new AmazonSimpleNotificationServiceClient(credentials, region);
註冊應用程序以獲得遠程通知
要註冊應用程序,請調用RegisterForRemoteNotifications,如下所示。將下面的代碼放在AppDelegate.cs,在下面提示的位置插入您的平台應用程序 ARN:
public override bool FinishedLaunching(UIApplication app, NSDictionary options) { // do something var pushSettings = UIUserNotificationSettings.GetSettingsForTypes ( UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null ); app.RegisterUserNotifications(pushSettings); app.RegisterForRemoteNotifications(); // do something return true; } public override void RegisteredForRemoteNotifications(UIApplication application, NSData token) { var deviceToken = token.Description.Replace("<", "").Replace(">", "").Replace(" ", ""); if (!string.IsNullOrEmpty(deviceToken)) { //register with SNS to create an endpoint ARN var response = await SnsClient.CreatePlatformEndpointAsync( new CreatePlatformEndpointRequest { Token = deviceToken, PlatformApplicationArn = "YourPlatformArn" /* insert your platform application ARN here */ }); } }
從 SNS 控制台向終端節點發送消息
-
選擇您的平台應用程序,選擇終端節點,然後單擊發佈至端點。
-
在文字框中輸入短信,然後按一下發佈訊息發佈訊息。