第一次对接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,可能收不到推送。须要重启一遍便可。
祝君对接成功。