基于UMeng消息推送测试-demo教程(iOS版)

作者: ttdiOS | 来源:发表于2018-02-10 18:56 被阅读393次

基于UMeng消息推送测试-demo教程(iOS版)

眼看着就要过年了(2017本命年终于快过去了临来崭新的2018大发年),每个人的心里就像飞了一样,这个时候能够在办公间待下来的,每个人都是精英,突然想起了那首张含韵的歌《放假了》。

今天是2017年腊月25距离2018年仅有5天,依旧在外拼搏着,马路俩边的商铺陆陆续续关门(有钱没钱回家过年!!!)

好了,进入正题~~~

前年写个一篇《基于UMeng第三方分享(新浪)测试-demo教程》教程,感兴趣的可以看一下,由于时间比较老旧可能有些操作流程更新了,但是不要紧,大体流程依旧在。

由于要做带有推送的app, 最终商量决定运用UMeng的SDK推送,这里的需求就是我们app自己的服务器通过umeng-sdk去推消息。

而不是通过Umeng的官网后台去编辑消息进行推送。这里需要安卓,iOS,以及我们的app java server 都需要进行umeng-sdk的集成。而今天这篇教程是通过Umeng的官网后台去编辑消息进行推送,后续再陆续进行更新以上需求教程

通过Umeng的官网后台去编辑消息进行推送到app

1.集成sdk

1.1.下载iOS端的umeng-sdk

Push SDK 3.0.1

下载后的文件是如下这样的:

Push SDK 3.0.1里的内容

其中:Common  // 公共组件是所有友盟产品的基础组件,必选

push    // Push组件

1.2.添加依赖库

基础依赖库

CoreTelephony.framework 获取运营商标识

    libz.tbd  数据压缩

    libsqlite.tbd  数据缓存

    SystemConfiguration.framework  判断网络状态

可选依赖库

  SecurityEnvSDK.framework 金融风控组件 

  UTDID.framework 设备标识ID组件

上述的可选依赖库在thirdparties文件夹里

SecurityEnvSDK.framework 金融风控组件   UTDID.framework 设备标识ID组件

笔者在添加可选依赖库后,运行报错,我就把它给删除了(不添加可选依赖库)

1.3.选择SDK功能组件并下载,解压.zip文件得到相应组件包(例如:UMCommon.framework, UMPush.framework这来个库必须添加进来)。

XcodeFile —> Add Files to "Your Project",在弹出Panel选中所下载组件包->Add。(注:选中“Copy items if needed”)

UMCommon.framework, UMPush.framework这来个库必须添加进来

添加依赖库,在项目设置target -> 选项卡General ->Linked Frameworks and Libraries 如下以及效果:

整体效果

1.4.打开推送开关

点击项目---->TARGET---->Capabilities,将这里的Push Notification的开关打开,效果如图所示:

Push Notification的开关打开

同时点击项目---->TARGET---->Capabilities-->Background Modes--->Remote notifications也要勾选上,如下:

TARGET---->Capabilities-->Background Modes--->Remote notifications也要勾选上

至此工程的配置已经完成了,接下来就是代码的编写,但是这之前还需要进行证书的配置。

2.iOS证书配置指南

是为了在umeng官网上传自己的p12证书,注意需要测试证书和生产证书,都需要上传,已经你导出p12时设置的密码

使用消息推送功能前,需要严格按照此文档配置相关证书。否则将会影响消息推送组件的正常使用。

本文档包括:

创建APP ID        // 类似于身份证标示

创建并配置CSR文件         // CSR是Cerificate Signing Request的英文缩写,即证书请求文件,在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件

创建并配置开发调试证书           // Certificates

添加测试设备

创建并配置Provisioning Profiles   // 配置概要文件

创建并配置推送证书(开发环境&生产环境)

导出推送证书的P12文件

在U-Push后台上传P12推送证书

*以Ad Hoc方式打包应用

iOS 10证书配置教程

2.1创建APP ID

登录Apple Member Center :https://developer.apple.com/membercenter,选择certificates,identifiers&profiles 选项,如下图所示:

选择certificates,identifiers&profiles 选项

选择identity中的APP IDs,如下图所示:

Identifiers也就是一个标示相当于身份证号码

注意:创建Explicit App ID时,要注意此时设置的Bundle ID要与APP以后的Bundle ID一致,如下图所示:

注意此时设置的Bundle ID要与APP以后的Bundle ID一致

选择Push Notification 来开通Push功能,如下图所示:

Push Notification 来开通Push功能

点击下方的register 按钮,几秒钟之后下方会变成一个Done ,表示APP ID已经创建完成,如下图所示:

注意: 创建的APP ID要与自己项目的Bundle ID保持一致。如果已经有APP ID,请确保自己的APP ID已经开通了Push功能,如果没有开通,可以点击APP ID,在其底部有一个Edit按钮,点击后选中Push服务并创建,如下图所示:

至此,APP ID创建完毕

2.2.创建CSR文件

如果你已经有CSR文件,请继续进行下一步的设置。(跳过2.2步骤的操作)

CSR是Cerificate Signing Request的英文缩写,即证书请求文件。证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件。证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。

在电脑中找到钥匙串----->钥匙串访问------>证书管理------>从证书颁发机构请求证书,如下图所示:

设置完证书信息后,点击“继续”,然后选择存储位置(保存到桌面),点击存储,至此,CSR文件创建成功。

文件如下:PushTestCertificateSigningRequest.certSigningRequest

PushTestCertificateSigningRequest.certSigningRequest

2.3.创建开发调试证书

如果你已经有开发调试证书,请继续进行下一步的设置。(跳过2.3步骤的操作)

选择Development(如果是发布上线,需要选择Distribution),如下图所示:

在这里我们先选测试证书(开发证书),后文中也会进行生产证书操作(Distribution),应为umeng官网后台同时需要开发证书(也就是测试证书)和生产证书

之后,你将看到如下四个证书。这一步,我们选择iOS App Development证书,如下图所示:

在choose file...中选择本地的CertificateSigningRequest(CSR)文件,然后点击继续,如下图所示:

choose file...中选择本地的CertificateSigningRequest(CSR)文件,然后点击继续,如下图所示:

点击Download,将证书下载到本地,双击下载的开发调试证书(文件名为:iOS_development.cer)

点击Download,将证书下载到本地,双击下载的开发调试证书(文件名为:iOS_development.cer),就可以在钥匙串访问中的我的证书中找到。(这里必须要注意的是:必须要双击下,否则,后面的推送会出现
状态:失败 

消息:device-token全部失败

的情况自己不注意的坑)

造成的失败,笔者就失败在这里了

下载后的文件如下:

ios_development.cer

至此,开发调试证书设置完毕

2.4. 添加测试设备

测试推送需要添加测试设备,添加方法如下所示:

2.5.创建Provisioning Profiles文件 (配置概要文件)

选择Development,创建开发环境的Provisioning Profiles(如果是发布上线,需要选择Distribution),如下图所示:

开发的配置概要文件 开发的配置概要文件

创建新的Provisioning Profiles,并选择之前生成好的App ID。如下图所示:

选择之前生成好的App ID

选中创建的证书:

选中创建的证书:

选中测试设备:

选中测试设备:

把创建的Provisioning Profiles,调试证书推送证书下载下来(文件名:umengpushtestdemo.mobileprovision)以后双击证书

文件如下:umengtestdemo.mobileprovision

umengtestdemo.mobileprovision

2.6.创建推送证书

选择Apple Push Notification service SSL(Sandbox)

这里笔者先选开发的推送证书

注意:推送证书分为开发环境和生产环境,如果需要生成生产环境的推送证书请选择: Apple Push Notification service SSL (Sandbox&Production),如下图所示:

Apple Push Notification service SSL (Sandbox&Production)

选中APP ID后,点击continue,直到上传CRS文件,如下图所示:

选择上方的PushTestCertificateSigningRequest.certSigningRequest文件

点击Download,将证书下载到本地后,双击下载的开发环境推送证书(文件名为:aps_development.cer),就可以在钥匙串访问中的我的证书中找到。

文件如下:aps_development.cer

aps_development.cer

2.6.导出推送证书的P12文件

注意:在钥匙串访问(KeyChain)的我的证书中选择刚刚导入的证书,选择导出,注意不要选中私钥,并设置相应密码即可。

正确的导出方式:

错误的导出方式如下:

注意:此步骤所设置的密码将在之后在U-Push后台上传推送证书时所使用,且密码只能包含大小写(a-z,A-Z ),数字(0-9),特殊字符(.-_),其他元素将会被过滤。

生产环境的推送证书也是以同样的方式导出。

至此,P12证书导出完毕。

2.7. 在U-Push后台上传P12推送证书

点击应用进入应用信息选项,即可上传已被导出的P12证书,如下图所示:

然后以同样的上述方式,配置成产的证书,并导出p12文件设置密码,上传到umeng官网后台的生产证书项里

3.工程代码的编写

4.在umeng官网后台的操作

,上述步骤中- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken{里会打印device token 的值64位的字符,添加到umeng官网后台的测试设备里

然后就是官网后台发送推送的操作,可以用单播的形式:

最终实现的效果图:

下面说一下关于umeng推送过程中遇到的坑:如下图:

device-token全部失败 device-token全部失败 DeviceTokenNotForTopic

这里一系列的原因:umeng官方并没有给出具体的解决方案,联系客户又是那么费时费力

解决方案1:

添加测试机设备的DeviceToken无效或者失败,报红色或者黄色都是不行的,

解决方案2:

配置证书时选的appID 必须和x-code里的Bundle Identifier相同,这是最大的一个坑,详细参见:http://bbs.umeng.com/thread-16274-1-2.html

demo地址:

https://github.com/mrzhao12/UMengPushTest

相关文章

网友评论

  • 路人甲_kbb:想咨询一下 APP角标是怎么控制的 比如说有5条 你看一1条 还剩4条,这个怎么设置的 ,谢谢了
    路人甲_kbb:@ttdiOS 哦 好的
    ttdiOS:@路人甲_kbb 角标暂时没接触过,你可以看下他们的umeng-api参考
  • JoyGY:想请教一下那个测试推送的时候device-token全部失败的这个坑最后怎么解决的,我的双击点过证书了,钥匙串中也显示证书有效的,可是还是有这个问题,不知道能否提点一下,谢谢
    JoyGY:@ttdiOS 谢谢,get了。我之前说的那个问题今天把所有的证书和描述文件全部删除了,然后重新设置重新下载弄了一遍发现就好了,不过有一点是把那个自动匹配描述文件设置成了自己创建下载下来的,不知道具体原因是不是这个,因为昨天也尝试换成手动的但是并没有什么作用,所以也没找到什么具体靠谱的原因
    ttdiOS:@黑色星星_GY https://www.jianshu.com/p/1ce25234c1d4
    ttdiOS:1,首先在umeng的官网后台看看推送能不能成功,工具里输入token看看是不是游戏
    2.配置证书时选的appID 必须和x-code里的Bundle Identifier相同,这是最大的一个坑,详细参见:http://bbs.umeng.com/thread-16274-1-2.html
  • 我本善良:请问下ios推送中,你们查看推送的消息列表中,打开的统计是否准确?我们推送了500多条,发送了423条,但是打开统计却显示的是2条,感觉严重失真啊
    ttdiOS:@我本善良 后台调用api然后推给,前端看不到,umeng的官网后台也看不到有多少,只能你的后端人员他们去查看。。。。
    ➕qq:1107214478,交流
    我本善良:@ttdiOS 我们是后台调用api然后推给um那种的, [UMessage didReceiveRemoteNotification:userInfo];这个方法是上报um说明多少用户是点击推送进app了。现在感觉就是服务端推給um,um经过苹果服务器再推给客户端中,受理数和发送数基本都是正常的。就是最后的打开事件失真了,我这个调用方式几乎是按照umdemo里面来的。楼主查看umapp推送后台的消息列表中的打开统计数是否正常?
    ttdiOS:@我本善良 这个分umeng官网后台推,和你们的app后端任用调用umeng的push-api推的,若是umeng官网后台推就去umeng官网后看,
    要是api-推就找你们的服务器人员核实,。2个不同啊
  • 奇怪的她的他:写得很详细,,,虽然我还没有尝试,,就这么多字就该给你个赞

本文标题:基于UMeng消息推送测试-demo教程(iOS版)

本文链接:https://www.haomeiwen.com/subject/ococtftx.html