前言

第一次对接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,可能收不到推送。需要重启一遍即可。

祝君对接成功。

AWS 移动推送到iOS设备,Amazon Pinpoint的更多相关文章

  1. 李洪强iOS之集成极光推送一iOS SDK概述

    李洪强iOS之集成极光推送一iOS SDK概述 JPush iOS 从上图可以看出,JPush iOS Push 包括 2 个部分,APNs 推送(代理),与 JPush 应用内消息. 红色部分是 A ...

  2. 苹果推送(APNs)ios push小结

    把app删除后就推送不成功了,可以看出deviceToken应该是设备+app来一起识别的,重新安装后仍然为同一个 简介 推送服务APNs(Apple Push Notification servic ...

  3. 李洪强iOS之集成极光推送二iOS 证书 设置指南

    李洪强iOS之集成极光推送二iOS 证书 设置指南 创建应用程序ID 登陆 iOS Dev Center 选择进入iOS Provisioning Portal. 在 iOS Provisioning ...

  4. 李洪强iOS之集成极光推送三iOS集成指南

    李洪强iOS之集成极光推送三iOS集成指南 SDK说明 适用版本 本文匹配的 SDK版本:r2.1.5 以后.查看最近更新了解最新的SDK更新情况.使用Xcode 6及以上版本可以使用新版Push S ...

  5. iOS 推送 获取手机设备的 deviceToken

    第一步:申请证书: 第二步:申请app ids,应用名字必须一致.然后再进入进行编辑.使其enable,绿灯. 第三步:申请provisioning profile,生成.mobileprovisio ...

  6. 推送通知iOS客户端编写实现及推送服务器端编写

    http://blog.csdn.net/tonny_guan/article/details/8963262 1.iOS客户端编程 推送通知技术在Mac OS X和iOS系统上都可以运行,我们本章主 ...

  7. 极光推送和友盟推送,ios端和安卓端的后端调试设置

    我是最后端的,这两天搞了一个app项目,前端安卓使用友盟很方便,调试比较顺利,然后ios就遇到各种问题了,证书.发送成功推送不成功,测试时用的TestMode(),ios上架之后就必须用product ...

  8. 极光推送 api ios参数问题

    这是首个app项目,推送用的是极光推送jpush 由于用官方文档出现接收多条的问题,在网上找到一套封装好的,非常感觉这位开发者 //推送.指定人error_reporting(E_ALL^E_NOTI ...

  9. 激光推送(ios,安卓)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

随机推荐

  1. (三)Knockout 控制流程

    foreach 示例1:迭代数组 foreach binding主要作用于lists或是tables内数据单元的动态绑定.下面是一个简单的例子: <table> <thead> ...

  2. windows和linux换行规则的区别

    在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符.要是在这 ...

  3. C#订阅与发布标准实现

    大概看了下C#官方提供的IObservable接口以及IObserver接口来实现发布和订阅,写的很标准,很有代表性,做下笔记,以后要是项目需要用到发布订阅再基于自己的需求改: public clas ...

  4. 【AtCoder】【模拟】【模型转化】Camel and Oases(AGC012)

    题意: 有一个骆驼,n个绿洲遍布在数轴上,第i个绿洲的坐标为x[i],保证x[i]单增.骆驼的驼峰有体积初始值V.当驼峰的体积变为v的时候,驼峰中至多只能够存储v L的水.骆驼希望走完所有的绿洲,并且 ...

  5. office图标(word,powerpoint,excel)异常(变成白板)问题修复

    都是wps搞的鬼. 如果先装了wps后卸载wps再装office就可能出现这个问题. 终于解决了!!先装个wps 2016,进入设置→高级→兼职性关联.这时你会发现ppt文件图标不是白板了.重启打开w ...

  6. C#中异步调用示例与详解

    using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServi ...

  7. dup(dup2/dup3)

    readme man~ NAME dup, dup2, dup3 - duplicate a file descriptor SYNOPSIS #include <unistd.h> in ...

  8. __x__(9)0906第三天__常见的标签

    <!doctype html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. Java课程课后作业190315之最大连续子数组(二维数组版)

    ,, 在本周的课堂上,老师再一次提高了要求,将一维数组升级成为了二维数组,然后求出块状的连续子数组. 一开始还想着借鉴之前球一维数组的O(n)的算法,后来还是没有找到头绪,舍友讲了自己的办法,但是没有 ...

  10. JBPM工作流(八)——流程实例(PI)Process Instance

    /** * 流程实例 *    *  启动流程实例 *    *  完成任务 *    *  查询 *      *  查询流程实例 *      *  查询任务 *          *  查询正在 ...