快速接入指南

快速接入指南

一、业务介绍

1.1 产品简介

个推是商用级的移动应用消息推送云服务供应商,客户端 SDK 支持 Android、iOS、HarmonyOS NEXT 三大平台,开发者集成 SDK 后,可以通过个推强大的 web 端及丰富的 API 开放接口,发送推送消息、统计分析推送效果。可有效提高 App 活跃度,增加用户留存率。

1.2 名词解释

名词             解释
通知消息 指定通知标题和内容后,由个推 SDK 自动处理在系统通知栏中展示通知栏消息,同时响铃或震动提醒用户(响铃和震动受手机系统的设置状态影响)。push
透传消息 即自定义消息,消息体格式客户可以自己定义,如纯文本、json 串等。透传消息个推只传递数据,不做任何处理,客户端接收到透传消息后需要自己去做后续动作处理,如通知栏展示、弹框等。
ClientId 个推业务层中的对外用户标识,用于标识客户端身份,由第三方客户端获取并保存到第三方服务端,是个推 SDK 的唯一识别号,简称 CID、cid。
在线推送 app 在前台打开运行时,cid 在线,通过个推渠道下发消息。
离线推送 app 在后台、锁屏、进程关闭时,cid 离线,通过厂商渠道下发消息。若 Android、鸿蒙 未集成离线厂商, iOS 未配置推送证书,则该系统机型无法使用离线推送。

更多名词解释参考:个推名词解释

1.3 消息推送流程

processon

二、应用创建

  • 如果您还没有个推 账号,可在 个推官网 ,完成账号注册。
  • 如果您还没有个推 应用,可参考 开发者中心使用说明 中的【新增服务】,完成 消息推送 应用创建。

三、客户端 SDK 集成

若您需要在手机设备上使用个推消息推送服务,必须先完成客户端 SDK 集成。

3.1 Android

  • Android 个推主包:个推为 Android 应用提供的安全稳定的推送 SDK,集成主包后仅可以使用 “在线推送”。

  • Android 厂商开通 :在各个安卓厂商平台开通消息推送服务,并在个推后台页面配置厂商参数。

    注意:参考此文档,必须配置(华为、荣耀、vivo、魅族)渠道的回执,才能统计到这些渠道完整的到达、折损数据。

  • Android 多厂商包:个推与主流安卓厂商合作融合了厂商推送 SDK,在个推开发者中心后台配置多厂商参数、并集成多厂商包验证可以成功获取 token。则可以正常使用 “离线推送”。

    目前华为、荣耀、魅族 不要求上架应用商店;vivo 、小米、oppo 必须上架应用商店后才可使用离线厂商推送。

  • 厂商消息报表补全:由于个推透传无展示数返回,华为、oppo 、vivo 无完整离线点击数报表返回,为了方便您在个推后台可以看到更加完整的推送数据统计,建议您在客户端埋点上报补全。

3.2 iOS

  • iOS 个推主包:个推为 iOS 应用提供的安全稳定的推送 SDK,集成主包后仅可以使用 “在线推送”。
  • iOS 推送证书:iOS 支持的推送通知功能,从苹果开发者官网导出证书并配置在个推开发者中心后台后,则可以正常使用 “离线推送”。

3.3 HarmonyOS NEXT

  • HarmonyOS 个推主包:个推为 HarmonyOS NEXT 应用提供的安全稳定的推送 SDK,集成主包后仅可以使用 “在线推送”。
  • HarmonyOS 厂商开通:按文档创建鸿蒙推送应用、开通推送服务、创建服务帐号密钥文件,验证可以成功获取 token。则可以正常使用 “离线推送

3.4 web、小程序

  • 小程序 SDK 集成文档:本SDK⽀持H5、⼩程序(微信、⽀付宝、字节)、Uni平台,为应⽤提供安全稳定的推送服务,集成后仅可以使用 “在线推送” 透传消息。
  • 微信小程序推送:如果要支持【微信小程序】订阅消息的方式,则需要按文档授权小程序给个推。同步模板后,支持下发微信订阅消息。

3.5 卓信 ID

使用上面最新版 Android 和 iOS 个推主包 SDK 默认集成了卓信 ID 。

个推消息推送全新升级,融入卓信 ID 服务。基于卓信 ID 的设备算法,升级后的消息推送服务可以有效帮助 APP 提升推送的设备覆盖率、设备聚合识别准确率、设备识别稳定性,安全完善推送底层设备 ID 体系。具体优势亮点可以看看:卓信 ID 详细讲解

卓信 ID 接口文档:建议您在 Android 和 iOS 客户端加上卓信 ID 初始化和 getZxid 调用。

3.6 其它插件

个推除了提供 Android、iOS、HarmonyOS 原生SDK 之外,也提供主流的开发平台 插件和示例

四、服务端推送

开发者可通过调用 服务端 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 个功能【创建推送】。

个推通知 + 厂商通知

notification

个推透传 + 厂商通知

transmission

4.3 服务端 API

服务端 API 使用时首先需要获取 AppId、AppKey、MasterSecret 参数,获取来源如下图所示:

params

个推服务端提供了 SDK 帮助开发者提升集成推送服务端的效率, 开发者不需要进行复杂编程即可使用个推推送服务的各项常用功能,SDK 可以自动帮您满足调用过程中所需的鉴权、组装参数、发送 HTTP 请求等非功能性要求。

注意事项:

  1. SDK 目前仅支持 Java 语言,若服务端是其它语言可以参考 服务端 RestAPI V2 文档 通过 Https 请求调用。

  2. 当您在使用过程中对接口字段有疑问时,可以通过 服务端 RestAPI V2 文档 查看具体字段描述。

  3. 安卓离线推送,营销类消息,各厂商都有额度限制,大部分厂商限制每天只能收到 2 条。

    建议申请消息分类(包含 extra.channel_id 如何申请),详见: 厂商通道限额

  4. 非OPPO、VIVO软件商店官方渠道下载的应用,厂商不提供公信消息服务。只能发送 测试消息、或者私信消息。

    本地集成测试可以推送 测试消息(支持:华为、荣耀、OPPO、VIVO)。

单推基础代码入参示例:为方便您测试,提供以下单推代码示例,更多接口及参数描述可查看 服务端 RestAPI V2 文档

{
    "request_id": "请填写10到32位的id",
    "audience": {
        "cid": [
            "请填写cid"
        ]
    },
    "settings": {
        "ttl": 7200000,
        //厂商推送策略strategy为 VIP 功能,需升级服务后方可使用。非VIP用户无法设置厂商策略,即使填写了也默认所有通道策略都是1 
        "strategy": {
            "default": 1,
            "ios": 4
        }
    },
    //push_message是在线个推通道消息。若要发iOS在线,此处须使用transmission透传消息。或者vip可设置strategy策略"ios": 4
    "push_message": {
        "notification": {
            "title": "安卓、鸿蒙在线通知标题",
            "body": "安卓、鸿蒙在线通知内容",
            "click_type": "startapp"
        }
    },
    //push_channel是离线厂商通道消息
    "push_channel": {
        "android": {
            "ups": {
                "notification": {
                    "title": "安卓离线通知标题",
                    "body": "安卓离线通知内容",
                    "click_type": "startapp"
                },
                "options": {
                    "HW": {
                        // 值为int 类型。1 表示华为测试消息,华为每个应用每日可发送该测试消息500条。仅开发者测试使用,此参数请勿发布至线上。    
                        "/message/android/target_user_type": 1
                    },
                    "HO": {
                        //值为int 类型。1 表示测试推送,不填默认为0。荣耀每个应用每日可发送该测试消息1000条。仅开发者测试使用,此参数请勿发布至线上。 
                        "/android/targetUserType": 1
                    },
                    "VV": {
                        //值为int 类型。0 表示正式推送;1 表示测试推送,不填默认为0。仅开发者测试使用,此参数请勿发布至线上。 
                        "/pushMode": 1
                    },
                    "XM": {
                        //新小米消息分类下,无论公信私信,/extra.channel_id 都必传,否则请求小米厂商接口会被拦截导致推送失败。  
                        "/extra.channel_id": "填写小米平台申请的渠道id"
                    }
                }
            }
        },
        "ios": {
            "type": "notify",
            "payload": "附加自定义消息",
            "aps": {
                "alert": {
                    "title": "iOS离线通知标题",
                    "body": "iOS离线通知内容"
                },
                "content-available": 0
            },
            "auto_badge": "+1"
        },
        "harmony": {
            "notification": {
                "title": "鸿蒙离线通知标题",
                "body": "鸿蒙离线通知内容",
                "category": "MARKETING",
                "click_type": "startapp"
            },
            "options": {
                "HW": {
                    //鸿蒙测试消息,华为每个应用每日可发送该测试消息1000条。仅开发者测试使用,此参数请勿发布至线上。 
                    "/pushOptions/testMessage": true
                }
            }
        }
    }
}

成功响应数据格式:

  • content-type: application/json;charset=utf-8
  • http code: 200 (http code码说明)
  • 返回值示例
{
    "code": 0,
    "msg": "",
    "data": {
        "$taskid": {
            "$cid":"$status"
        }
    }
}
名称 类型 描述
$taskid Json 任务编号
$cid String cid: App的用户唯一标识;status: 推送结果
successed_offline: 离线下发(包含厂商通道下发)
successed_online: 在线下发
successed_ignore: 最近 90 天内不活跃的用户不下发

注意:服务端 api 返回成功仅表示接口请求调用成功,不能说明客户端是否收到了消息。

例如推送返回 successed_offline 则说明推送时客户端不在线,走离线推送。若安卓客户端未收到消息,即【安卓离线消息收不到】,可以按下方 七、帮助中心 排查。

五、合规指南

消息推送SDK合规指南:您应确保在App首次运行时通过明显方式提示终端用户阅读您的《隐私政策》,并取得终端用户的合法授权后,再初始化SDK进行信息收集与处理。如果终端用户不同意您的隐私政策,则不能初始化个推的各项SDK,也无法使用相应SDK对应功能。

可以参考 合规指南 文档进行披露。

六、常用功能

  • Android 消息分类:各安卓厂商对推送消息分类进行管理,若不按厂商要求进行分类和配置,大部分厂商会默认单个应用单个设备单日只能发 2 条消息。
  • 消息终止、覆盖和撤回:APP 在进行日常消息推送的过程中,因为种种原因,有时会出现推送“失误”,比如不小心推送内容输入错误,或是测试生产环境切换错误,给线上用户推送了测试消息等等。个推消息推送的消息终止、消息覆盖和消息撤回三大功能可以有效帮助 APP 避免推送“失误”。
  • 角标设置:应用badge角标,是手机桌面应用图标右上角圆点或者数字角标,常见的场景是伴随通知栏消息显示,提醒用户及时点阅新消息。
  • iOS灵动岛实时活动推送:iOS16.1开始允许开发者和灵动岛交互,展示实时活动类型的通知栏消息。

增值功能

  • 消息推送 - 到达率提升方案利用个推大数据能力,整合多通道,实现消息高效分发,提升消息到达数和到达率。
  • 消息推送 - 点击率提升方案:通过“策略+模型”的方式,在”合适的时间,把合适的内容,用合适的策略推给合适的人“,实现在有限的消息限额里,提升消息的触达数、点击数、点击率。

七、帮助中心

当您在集成推送服务遇到问题时:

  1. 先仔细阅读此接入指南及对应的集成文档,查看是否有遗漏。
  2. 阅读常见问题(Android 常见问题iOS 常见问题服务端常见问题),查看是否能解决。

示例:开发者在推送消息后,发现 Android 客户端并没有收到通知栏消息展示。

处理思路:

  1. 先仔细阅读此接入指南以及 Android 客户端的集成文档,能够区分在线、离线推送,并确认集成是否成功。
  2. 查看 Android 常见问题 中的 【安卓在线收不到通知】或【安卓离线收不到通知】,根据常见问题中提供的解答进行处理。

当官网文档无法解决您的问题时,可点击右侧的【技术咨询】扫码联系个推技术支持。

开发者中心 SDK 下载

文档中心搜索

技术
咨询

微信扫一扫

随时联系技术支持

在线
咨询