陈斌彬的技术博客

Stay foolish,stay hungry

百度云推送(原创)

测试效果:收到远程通知

img

什么是云推送?

百度云推送(Push)是一站式APP信息推送平台,为企业和开发者提供免费的消息推送服务,开发者可以通过云推送向用户精准推送通知和自定义消息以提升用户留存率和活跃度。

百度云推送SDK 功能说明

框架设计

在iOS App 中加入消息推送功能的基本步骤分为如下两步

第一步,开发者在 Apple 开发者中心官网上注册推送证书(详见附录),然后在 App 工程中添加证书,并且实现一系列推送有关的方法。

第二步,向 Apple 的推送服务器 APNS (Apple Push Notification Service) 发送需要推送的消息,APNS 在收到消息后,会将消息发到设备上。

以上整个过程较为复杂,而且功能比较单一,在集成百度的Push SDK 后,可以越过这些复杂的操作,使用百度 Push SDK 提供的 API接口,可以更加简便、简捷的在 App 中使用 Push 功能。

由于苹果 iOS 系统限制,推送到搭载 iOS 系统设备上的消息都需要经过 APNS 再下发到设备,百度 Push 服务相当于开发者与 APNS 之间的桥梁,帮助开发者完成 Push 服务。具体如下图所示:

img

对应上图的流程标号,推送服务的各个流程解释如下:

  • 1、初始化应用推送证书

  • 2、应用运行在 iOS 设备上时,向百度云推送服务器做绑定操作

  • 3、向云推送服务发送请求,向指定iOS设备推送消息(广播或组播不需要user id)

  • 4、百度云推送在收到开发者的推送请求后,向 APNS 转发推送消息

  • 5、APNS 收到推送消息的命令,向 iOS 设备推送消息,开发者想要推送的消息成功到达指定设备

主要功能

百度云推送 SDK 主要提供以下功能接口:

  1. Push 服务

    • Push 服务初始化及绑定
    • Push 服务解除绑定
  2. Tag 管理

    • 创建 tag
    • 删除 tag
    • 列出 tag
  3. 通知推送

  4. 推送效果反馈

制作推送证书

开发证书:需上传推送证书的“开发版本” 的pem文件。制作iOS 开发推送证书在我的这篇iOS 消息推送 (Message) 证书设置指南中有讲到,不熟悉的同学可以参考一下。

进入终端,到证书目录下,运行以下命令将p12文件转换为pem证书文件:

openssl pkcs12 -in MyApnsCert.p12 -out MyApnsCert.pem -nodes    

img

img

进入左边导航栏,选择“云推送”功能,首次选择时,需要进行【推送设置】,如图所示:

img

说明(iOS):

开发证书:需上传推送证书的“开发版本” 的pem文件。

生产证书:需上传推送证书的“生产版本” 的pem文件。

部署状态:开发测试期间选择 【开发状态】,待 App 上线完成后可更改为【生产状态】。

注:有关如何申请证书的步骤可在文档最后【附录-申请推送证书】中参考。

完成以上信息后,点击“保存设置”按钮即可保存信息。

保存后回到原来的界面,点击应用配置

img

可以查看到 API KEY

img

修改工程设置

选择相应的Demo分开发Demo和发布Demo打开.xcodeproj 工程,首先需要修改 Bundle Identifier ,修改为在创建证书时所选择的 Bundle ID,如下图:

iOS SDK开发步骤

添加SDK到工程中

添加到SDK到工程中的步骤如下:

  • 将libBPush.a和BPush.h添加到自己的工程下,添加时需要注意勾选当前Target

  • SDK需要以下库:Foundation.framework、CoreTelephony.framework、libz.dylib、SystemConfiguration.framework,请在工程中添加。

img

修改下面方法中的apikey的值为自己的apikey,并配置为自己的证书,如下图:

img

客户端设置开启Remote notifications,需要在 Xcode 中修改应用的 Capabilities 开启 Remote notifications,(红框内的必须要做哦)请参考下图:

img

ios7之后如果像上面一样设置好了,并且服务端aps字段中添加content-available字段为1的话,了那么收到远程通知后,应用在后台的话会在下面的方法中接受到远程通知,对应程序中的代码是(注意,iOS7之后没有开启后台的话也可以通过点击通知调起下面的方法只是不能在后台状态下运行一段代码):

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

iOS7之前没有后台运行代码的功能,只能在接受到通知,并点击通知调起下面的方法,对应程序中的代码是:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

运行Demo应用

若以上步骤均无误,即可对 Demo 进行真机测试(推送通知必须在真机环境下进行测试)。如下图所示

img

推送信息

广播

点击创建推送

img

进入百度云推送管理平台

img

编写短信

img

控制台输出

img

查看发送状态

img

收到远程通知

img

单播

img

img

img

参考

百度云推送