第一次對接aws,遇到的坑是真多。如今記錄一下。本文主要用到的是【Amazon Pinpoint】推送。html
開發人員的指南:https://docs.aws.amazon.com/zh_cn/pinpoint/latest/developerguide/welcome.htmlnode
Amazon的SDK地址:https://github.com/aws/aws-sdk-iosios
必定要按照5個步驟一步一步來,拿到的證書纔是正確的。git
將 iOS 應用程序添加到 Amazon Pinpointgithub
咱們建立完應用以後,就能夠在控制檯上,拿到測試的Demo, 能夠本身運行Demo,測試通知功能。json
拿Demo的步驟:swift
一、登陸 AWS 管理控制檯,在 https://console.aws.amazon.com/mobilehub 打開 Mobile Hub 控制檯。xcode
若是尚未建立iOS應用程序,則跳到第4步【建立iOS應用程序】。若是已經建立了,跳到第3步建立工程
app
二、在全部的項目中,選擇要測試的項目,https://console.aws.amazon.com/mobilehub/homeide
選中本身的Projects , 點擊進入,點擊iOS 的 【integrate】,其中【download cloud config】是本身的配置文件,集成到本身的APP裏面須要用的,點擊右上角的【Resources】下載本身的測試Demo.
三、若是上面的操做都找不到,那你就須要選建立一個工程。步驟https://docs.aws.amazon.com/zh_cn/pinpoint/latest/developerguide/getting-started-ios-mobilehub.html
拿到demo以後,咱們發現,程序運行不起來的。在demo中,有一個【podfile】文件,須要【pod install】更新一下,接着打開【MySampleApp.xcworkspace】 這個工程。
以後,就能夠 使用 Amazon Pinpoint 測試示例應用程序 經過控制檯來測試通知了。
另外須要注意,測試通知,必定要 導出.ipa文件,經過安裝的方式安裝在手機 ,才能接收到通知。若是仍是沒有收到通知,能夠先關閉程序,再從新打開。
測試成功後,咱們發現,經過控制器的測試,是對全部設備一塊兒發的通知。若是想針對單個用戶,實現點對點的通知,咱們須要給後臺傳deviceToken
在【MySampleApp】中,咱們已經拿到deviceToken了,在相關的代碼中:
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { NSLog(@"deviceToken: %@", deviceToken); [_pinpoint.notificationManager interceptDidRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; }
拿到的deviceToken是相似下面這一串:
Device Token = <examp1e 29z6j5c4 df46f809 505189c4 c83fjcgf 7f6257e9 8542d2jt 3395kj73>
將設備令牌提交給 Amazon SNS 時,設備令牌中不要包含空格:如
<examp1e29z6j5c4df46f809505189c4c83fjcgf7f6257e98542d2jt3395kj73>
另外,咱們還須要給後臺提供.pem文件。直接第一步拿到的.p12轉成.pem便可
openssl pkcs12 -in myapnsappprivatekey.p12 -out myapnsappprivatekey.pem -nodes -clcerts
這一步的操做,能夠參考:APNS 入門 ,感受這裏的文檔有點舊了,左邊寫着是2010年的,使用 Amazon SNS 控制檯將通知發送到設備上的 iOS 應用程序一直嘗試不成功。
這一步,能夠參考:將推送通知添加到您的應用程序
這裏的文檔,是有坑的:
一、iOS只有swift語言的說明。解決:經過對照Demo【MySampleApp】能夠獲得解決。
二、pod sdk是一個大坑。文檔上的pod 類庫名寫錯了,一萬個泥馬
解決:實現上,咱們經過看demo,須要pod的類庫是:
pod 'AWSAuthCore', '~> 2.6.1' pod 'AWSPinpoint', '~> 2.6.1'
github上的aws sdk地址,在【前言】上有寫。
當咱們集成完項目以後,最終須要變動工程文件,只須要登陸控制檯,把 【download cloud config】下載下來,替換一下工程的【awsconfiguration.json】文件便可。
一、檢查APP工程,已經打開了【Push notification】開關
二、APP的包,必定要經過.ipa文件安裝。就是xcode -- product -- archive
三、首次安裝打開的APP,可能收不到推送。須要重啓一遍便可。
祝君對接成功。