AWS 移動推送到iOS設備,Amazon Pinpoint


前言

第一次對接aws,遇到的坑是真多。現在記錄一下。本文主要用到的是【Amazon Pinpoint】推送。

開發人員的指南:https://docs.aws.amazon.com/zh_cn/pinpoint/latest/developerguide/welcome.html

Amazon的SDK地址:https://github.com/aws/aws-sdk-ios

實踐步驟,不要亂

第一步:拿到推送證書

一定要按照5個步驟一步一步來,拿到的證書才是正確的。

第二步:建項目將 iOS 應用程序添加到 Amazon Pinpoint

將 iOS 應用程序添加到 Amazon Pinpoint

我們創建完應用之后,就可以在控制台上,拿到測試的Demo, 可以自己運行Demo,測試通知功能。

拿Demo的步驟:

1、登錄 AWS 管理控制台,在 https://console.aws.amazon.com/mobilehub 打開 Mobile Hub 控制台。

如果還沒有創建iOS應用程序,則跳到第4步【創建iOS應用程序】。如果已經創建了,跳到第3步創建工程

2、在所有的項目中,選擇要測試的項目,https://console.aws.amazon.com/mobilehub/home

選中自己的Projects , 點擊進入,點擊iOS 的 【integrate】,其中【download cloud config】是自己的配置文件,集成到自己的APP里面需要用的,點擊右上角的【Resources】下載自己的測試Demo.

    

3、如果上面的操作都找不到,那你就需要選創建一個工程。步驟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和.pem文件證書傳給后台

測試成功后,我們發現,通過控制器的測試,是對所有設備一起發的通知。如果想針對單個用戶,實現點對點的通知,我們需要給后台傳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 應用程序一直嘗試不成功。

 第五步:集成到真實APP項目中

 這一步,可以參考:將推送通知添加到您的應用程序

這里的文檔,是有坑的:

1、iOS只有swift語言的說明。解決:通過對照Demo【MySampleApp】可以得到解決。

2、pod sdk是一個大坑。文檔上的pod 類庫名寫錯了,一萬個泥馬

解決:實現上,我們通過看demo,需要pod的類庫是:

  pod 'AWSAuthCore', '~> 2.6.1'
  pod 'AWSPinpoint', '~> 2.6.1'

github上的aws sdk地址,在【前言】上有寫。

最后,變更工程

當我們集成完項目之后,最終需要變更工程文件,只需要登錄控制台,把 【download cloud config】下載下來,替換一下工程的【awsconfiguration.json】文件即可。

 

收不到推送

1、檢查APP工程,已經打開了【Push notification】開關

2、APP的包,一定要通過.ipa文件安裝。就是xcode -- product -- archive

3、首次安裝打開的APP,可能收不到推送。需要重啟一遍即可。

 

 祝君對接成功。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM