文章目录
一、业务介绍
1.1 产品简介
个推是商用级的移动应用消息推送云服务供应商,客户端 SDK 支持 Android 和 iOS 两大平台,开发者集成 SDK 后,可以通过个推强大的 web 端及丰富的 API 开放接口,发送推送消息、统计分析推送效果。可有效提高 App 活跃度,增加用户留存率。
1.2 名词解释
1.3 消息推送流程
二、应用创建
如果您还没有个推 账号,可在 个推官网 ,完成账号注册。
如果您还没有个推 应用,可参考 开发者中心使用说明 中的【新增服务】,完成 消息推送 应用创建。
三、客户端 SDK 集成
若您需要在手机设备上使用个推消息推送服务,必须先完成客户端 SDK 集成。
3.1 Android
Android 个推主包:个推为 Android 应用提供的安全稳定的推送 SDK,集成主包后仅可以使用 “在线推送”。
Android 多厂商包:个推与主流安卓厂商合作融合了厂商推送 SDK,在个推开发者中心后台配置多厂商参数、并集成多厂商包后,可以同时使用 “离线推送”,能提高在安卓厂商设备上的消息到达率。
厂商消息报表补全:由于个推透传无展示数返回,华为、荣耀、OPPO 、vivo 无完整离线点击数报表返回,为了方便您在个推后台可以看到更加完整的推送数据统计,建议您在客户端埋点上报补全。
3.2 iOS
iOS 个推主包:个推为 iOS 应用提供的安全稳定的推送 SDK,集成主包后仅可以使用 “在线推送”。
iOS 推送证书:iOS 支持的推送通知功能,从苹果开发者官网导出证书并配置在个推开发者中心后台后,可以同时使用 “离线推送”,能提高在 iOS 设备上的消息到达率。
四、服务端推送
开发者可通过调用 服务端 RestAPI V2 或者登录 个推开发者中心 从页面下发消息。(若您想对单个 cid 用户进行推送,cid 必须先从客户端获取 )
4.1 服务端消息下发流程(必读)
当 CID 在线(即 app 在前台打开运行)时:
消息通过个推通道下发到客户端。
具体到服务端 RestAPI-V2 代码中,即 push_message 中的 notification(通知) 或 transmission(透传) 内容传递给客户端。
注意:iOS 系统不展示个推在线通知消息,所以推送用户是 iOS 时,push_message 内只能使用 transmission,iOS 客户端在线接收时自己做通知栏展示。
当 CID 离线(即 app 在后台、锁屏、进程关闭)时:
有开启对应厂商离线功能的,消息将通过个推侧请求对应厂商侧的服务端。
具体到服务端 RestAPI-V2 代码中,即 push_channel 中的通知内容传递给厂商,实际的消息是经由厂商服务器下发至客户端;对于没有开启对应厂商功能的,消息将存在个推的离线库中,等待 CID 在线,再通过个推通道下发到客户端。
注意:若服务端 push_channel 不传值,则无法接收离线消息。
4.2 开发者中心后台
登录 个推开发者中心,进入个推消息推送 dos 页面,可通过以下 2 种方式【创建推送】。
https://dev.getui.com/
注册完成之后进入消息推送服务:
新建一个测试app,建完之后在我的——>应用管理里面可以获得app的信息:
这里面的信息等下在服务端调用的时候会用得到,有兴趣的小伙伴可以将服务端sdk的demo下载下来,很有研究价值哦。
4.3 推送代码
其他详细的以及客户端的只是我就不补充了,在个推官网文档中都有很好的解释及说明。
https://docs.getui.com/getui/server/rest_v2/service_sdk/
加入依赖:
<dependency> <groupId>com.getui.push</groupId> <artifactId>restful-sdk</artifactId> <version>1.0.0.1</version> </dependency>
GtApiConfiguration apiConfiguration = new GtApiConfiguration(); //填写应用配置 apiConfiguration.setAppId("-----"); apiConfiguration.setAppKey("-----"); apiConfiguration.setMasterSecret("-----"); // 接口调用前缀,请查看文档: 接口调用规范 -> 接口前缀, 可不填写appId apiConfiguration.setDomain("https://restapi.getui.com/v2/"); // 实例化ApiHelper对象,用于创建接口对象 ApiHelper apiHelper = ApiHelper.build(apiConfiguration); // 创建对象,建议复用。目前有PushApi、StatisticApi、UserApi PushApi pushApi = apiHelper.creatApi(PushApi.class); //推送 //根据cid进行单推 PushDTO<Audience> pushDTO = new PushDTO<Audience>(); // 设置推送参数 pushDTO.setRequestId(System.currentTimeMillis() + ""); PushMessage pushMessage = new PushMessage(); pushDTO.setPushMessage(pushMessage); GTNotification notification = new GTNotification(); pushMessage.setNotification(notification); notification.setTitle("测试" + new Date()); notification.setBody("哈哈哈"); notification.setClickType("url"); notification.setUrl("https://www.getui.com"); // 设置接收人信息 Audience audience = new Audience(); pushDTO.setAudience(audience); audience.addCid("77b5b288038f1a418d071-----------"); // 进行cid单推 ApiResult<Map<String, Map<String, String>>> apiResult = pushApi.pushToSingleByCid(pushDTO); if (apiResult.isSuccess()) { // success System.out.println(apiResult.getData()); } else { // failed System.out.println("code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg()); }
测试结果:
五、参数说明
https://docs.getui.com/getui/server/rest_v2/common_args/
等等,可以下载官方sdk项目查看
来源地址:https://blog.csdn.net/wang121213145/article/details/128953874