OPPO开放平台 推送数据统计

OPPO开放平台 推送数据统计

单条推送消息数据

点击【推送记录】-【通知栏数据】,可以查看每条消息的详细数据。

点击“详情”,可显示每个推送任务的详情、目标用户、后续动作等相关信息
点击漏斗,查看查看数据下发中事件流失的具体统计

应用数据总览

数据指标解读

1)目标数:创建推送任务时,提交的用户ID数据量。
2)有效数:经过系统过滤去除无效设备数据。服务端会过滤出判定为失效的设备ID,设备失效的原因可能有:用户卸载、刷机、app三个月之内未有联网行为等。
3)推送数:实际成功下发的用户数,即在消息有效期内成功连接并获取该条消息的数量。
4)到达数:成功将消息推送到用户手机上的数量。
5)展示数:用户手机收到消息后,成功在通知栏中展示出来的消息数量。
6)点击数:消息在系统通知栏展示后,用户点击的数量。
7)累计用户:应用累计注册的设备数,同一设备重复注册只算一个。
8)当日活跃用户数:当天有过连接记录的设备数据。
9)当前在线用户数:指当前保持着推送长连接的设备数。

OPPO消息推送怎么消息撤回

OPPO消息推送怎么消息撤回

消息推送后,若出现内容错误或者其他问题可以进行“撤回”操作,如想停止下发消息,可第一时间点击【停止下发】。
注意:已经下发的消息不可撤回;停止下发的消息计入推送限额。

操作方式:进入推送记录-通知栏数据,点击需要停止下发消息的数据详情,进入详情界面后点击【停止下发】

OPPO推送 创建通知栏消息

OPPO推送 创建通知栏消息

创建推送

进入应用后,点击左侧菜单栏“创建推送”,进入消息配置页

功能设置项说明
推送内容短文本只展示一行内容, 超过一行的内容不会显示
长文本支持消息内容填写128个字符,让消息内容可更全面展示
(仅首条消息默认展示全部内容, 非首条默认只展示一行)
大图消息支持消息带大图发送,在连接wifi状态下通知栏第一条消息可显示大图,非通知栏第一条消息或非wifi状态下消息不显示大图;
ColorOS5.0之后版本可用;
图片格式:960*368 px,文件小于1024KB,PNG/JPG/JPEG格式
消息备注推送运营平台消息备注,不会展示在用户终端设备上
功能设置项说明
一键导入常用配置一键导入常用配置,可以储存最近下发的10条消息的设置方案,在下一次推送相同类型的消息时,仅需一步操作,就可以完成大部分的选项的设置;
包含离线选项设置、有效时长、定速推送、定速数值、通道选择等配置
附加参数自定义参数自定义填写多组键值对,用户点击通知后传输给应用服务端/客户端,完成相应的操作
点击动作打开应用点击通知消息,进入应用首页
打开应用内页点击通知消息,跳转至应用中指定的内页
打开网页地址点击通知消息,跳转浏览器打开指定的URL页面
功能设置项说明
推送范围Registration ID应用在对应设备的上唯一ID,不同的应用RegistrationID不同;
超过5个Registration ID请导入txt或者rar文件,要求UTF-8无BOM格式编码,每行1个Registration ID,大小不超过200M。(注意:rar仅支持RAR4压缩文件格式);
Registration ID在用户设备刷机、卸载应用、或设备长时间无连接时失效
功能设置项说明
消息时间限时展示消息在通知栏展示后开始计时,到达限制时间后从通知栏消失。
最长可设置为100个小时
定时展示消息到达设备后,会在选定的时间段内展示到用户手机通知栏
有效时长在有效时长范围内,上线的用户均可收到通知
最长可设置为240个小时
功能设置项说明
优先级别消息下发优先级
P0为最高优先级,P3为所有消息的默认级别。
P1、P2、P3、P4受最高条数的限制,若在该消息前已经发满最高条数,则该消息不再下发。
通道选择消息下发时候的通道,详见《通知通道(Channel)适配》。
消息图标通知栏消息内容右侧的消息图标
尺寸144*144像素,200K以内
测试预览当前创建消息的填写内容和设置均确认无问题后,可以使用测试预览功能检验消息的推送效果。使用预览推送下发消息时,需要填写接收设备的RegistrationID。
预览推送支持预览人员名单功能,可以使用此功能储存常用的预览设备信息,也可以对储存的预览人员信息进行修改、增删,提高预览推送功能使用效率;
如何获取设备的RegistrationID:在“配置管理-检查工具”中,根据设备IMEI号查询。设备IMEI号为拨号键盘输入*#06#,即可显示


当所有信息填写完毕后,发送【测试预览】,预览消息无误后点击【下一步】,将创建的消息提交审核。

审核消息

消息无法自发自审,创建消息后需切换为主账号、管理员、审核者角色进行消息审核。账号配置请参考《帐号管理》,仅应用主账号可进行账号配置

审核帐号点击左侧菜单栏“推送审核”,选择指定消息详情进入审核

消息审核需要进行预推测试,预览消息无误后点击【审核通过】,消息会立即下发(消息的有效时长从消息创建开始计算,若审核后消息有效期已过,消息会正常下发但无法展示,请注意消息的发送与审核时间)。

当创建的消息在审核时发现内容异常或者其他问题,可以进行“打回”操作,打回的消息需要二次确认并说明原因;打回的消息支持预览推送和复制操作;已打回的消息,不可以再进行推送。

OPPO推送 登陆OPUSH推送运营平台

OPPO推送 登陆OPUSH推送运营平台

使用企业开发者账号或推送运营平台应用子帐号登录开放平台,点击链接进入OPUSH推送运营平台,或通过“管理中心 -生态服务- 应用服务- 开发服务” 进入OPUSH推送运营平台。
推送运营平台应用子帐号配置,请参考帐号管理


名词解析

1)应用名称:产品的表达信息,显示在客户端界面供手机用户搜索和下载的重要标识。
2)应用包名:应用的唯一标识。
3)AppId:应用的身份标识,在上传应用后获得。
4)推送类型:分为正式和测试推送。“测试推送”每天仅可推送1000条消息,限测试使用;“正式推送”需要上架应用商店后才能申请。
5)累计用户:从接入推送服务的app客户端,用户安装并激活的累计用户量,去除已卸载用户数。
6)可推送总数:单个应用每天可推送消息总数,具体可以查看推送服务限制-推送数量限制规则累计用户数和可推送总数在OPPO推送运营平台可查询,每天会刷新。

OPPO推送消息内容审核标准 基于第三方审核结果的消息推送

基于第三方审核结果的消息推送

OPPO推送服务禁止推送违反《通知运营规范》内容规范的消息,为避免您的消息存在内容违规,建议您基于第三方内容审核平台(推必安)的审核结果来进行消息推送,即在推送消息给Push服务器时,附带推必安对消息体内容审核后的结果,当OPPO PUSH服务器检测到审核结果不通过时,会对消息进行拦截,并返回结果。

推送消息内容安全公共服务平台(推必安)提供高效过滤色情、广告、涉政、暴恐、违法、低俗等多类垃圾文字及关键词的检测能力,推必安接入方式详见推必安官网公有云接口文档。

基于推必安审核结果消息推送流程

流程说明

1、开发者调用推必安登录审核平台接口(https://text.tuibianchina.com/manager/apiLogin),获取推必安审核接口需要的audit_token。
1)登录推必安官网,注册帐号。
2)调用推必安审核平台接口。

请求示例

curl -H “Content-Type:application/json” -X POST -d '{"userName":"admin","password":"$MD5(PWD)"}' https://text.tuibianchina.com/manager/apiLogin

响应示例

{ “errno”: 0, “errcode”:”success” “errmsg”: “成功” ”data“: { “record”: “4863ba214b9f4673b88e9b25afa8036f” } }

说明

响应成功获取的“record”是您用于文本审核接口时鉴权的参数audit_token。

2、开发者将需要推送的标题(title)、内容(content)拼接成字符串,拼接方式见注1。调用推必安审核接口(https://text.tuibianchina.com/v1/audit),获取审核结果。
请求示例:

curl -H "Content-Type:application/json" -X POST -d '{"pkg":"com.opush.test", "content":"标题#内容”}' https://text.tuibianchina.com/v1/audit

响应示例

 { “code”: 40004, “data”: { “contentId”: “4863ba214b9f4673b88e9b25afa8036f”, “labels”: [ { “level”: 1, “reason”: “POLITIC”, } ] }, “msg”: “Block” } 

说明

code表示响应码,“200”为通过,“40004”为不通过
如果您的审核文本存在敏感词,响应体会将敏感词显示在labels中。
更多字段值内容详情请参见推必安公有云接口文档。

3、将推必安返回的审核结果,传递到opush推送接口的auditResponse参数,进行消息推送。详见接口文档《通知栏消息》

4、相关推送接口都增加了auditResponse字段,详情见服务端API接口文档。

注1:在请求推必安审核接口时传入的content字段需要使用后续消息推送的标题(title)、内容(content)进行拼装,具体格式为”标题#内容”,及”title#content”。

OPPO开放平台 服务端单点推送

OPPO开放平台 服务端单点推送

单点推送

单点推送

单点推送主要用于向一个特定的用户推送同一条消息的场景。一条单点推送消息对应一个推送目标,对应一个消息ID。针对批量的单点推送任务,OPPO PUSH提供批量的单点推送接口可供开发者一次性发起多条单点推送服务。
和广播推送相比,单点推送无需预先保存消息体,而是在调用推送消息接口的同时传入消息内容。
为方便表述,以下部分内容介绍会将单点推送简称为单推。

单点推送接口

接口详情

描述内容
接口功能发送通知栏消息
请求方法POST
Content-Typeapplication/x-www-form-urlencoded
请求编码UTF-8
请求路径/server/v1/message/notification/unicast

请求参数

参数定义:

名称类型必须默认描述
auth_tokenstring鉴权令牌,详见鉴权一章。
messageString消息体参数,接受一个嵌套的JSON结构,推送目标和具体消息内容均在这个字段中配置。

message字段是一个JSON结构参数,接受的字段及含义如下:

名称类型必须默认描述
target_typeShort推送的目标类型 2: registration_id 5: 别名
target_valueString推送目标,按taget_type对应填入,仅接受一个值。
notificationJSON通知栏消息内容,参考消息体内容定义,按照JSON格式填入
verify_registration_idBooleanFALSE消息到达客户端后是否校验registration_id。 true表示推送目标与客户端registration_id进行比较,如果一致则继续展示,不一致则就丢弃;false表示不校验

message示范:

{
		"target_type": 2,
		"target_value": "CN_078ad8b8a137cadb14ae5b70cf846312",
		"verify_registration_id": true,
        // notification是一个嵌套在message的json,配置通知栏消息内容和参数
		"notification": {
				"appMessageId": null,
				"style": 1,
				"bigPictureId": null,
				"smallPictureId": null,
				"title": "您的订单已取消",
				"subTitle": null,
				"content": "您的订单(realme X7…) 已取消",
				"clickActionType": 4,
				"clickActionActivity": "com.realme.store.home.view.MainActivity",
				"clickActionUrl": null,
				"actionParameters": "{\"messageNo\":null,\"title\":\"您的订单已取消\",\"desc\":\"您的订单(realme X7…) 				已取消\",\"type\":null,\"redirectType\":2,\"resource\":\"1\",\"version\":1}",
				"showTimeType": 0,
				"showStartTime": null,
				"showEndTime": null,
				"offLine": true,
				"offLineTtl": 86400,
				"pushTimeType": 0,
				"pushStartTime": null,
				"timeZone": null,
				"fixSpeed": null,
				"fixSpeedRate": null,
				"networkType": null,
				"callBackUrl": null,
				"callBackParameter": null,
				"channelId": "message",
				"showTtl": 0,
				"notifyId": 1
				}
}

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString请求响应信息
dataString响应返回值,正确响应后包含消息ID

推送请求调用成功响应示例:

{
    code:0,
    message: "",
    data : {
       // 消息ID 格式为 AppID-1-1-全局唯一性ID
       messageId : ZngnvJIM7wQusNtbqYnpH6XX-1-1-622ff7cfae27668d2ed3afec,
       } 
}

推送目标存在问题响应示例:
推送请求调用失败,但推送目标存在问题

{
    code:1000,
    message: "registration_id格式不正确
}

返回码(code)

Code英文描述中文描述
10000Invalid Registration_idregistration_id格式不正确

批量单推接口

接口

描述内容
接口功能批量发送单推通知栏消息
请求方法POST
Content-Typeapplication/x-www-form-urlencoded
请求编码UTF-8
请求路径/server/v1/message/notification/unicast_batch

请求参数

和推送单条消息的单推接口相比,批量单推接口使用messages字段容纳不少于一条的消息推送参数。messages字段是一个JSON数组,里面的一个元素和单推接口参数中的message相同。
以下是参数定义:

名称类型必须默认描述
auth_tokenstring鉴权令牌,详见鉴权一章。
messagesString通知栏消息JSON数组字符串,示例:[{message},{message}]【最多1000个】

message:

名称类型必须默认描述
target_typeShort目标类型 2: registration_id , 5:别名
target_valueString推送目标用户: registration_id或alias
notificationJSON通知栏消息内容,参考消息体内容定义,按照JSON格式填入
verify_registration_idBooleanFALSE消息到达客户端后是否校验registration_id。 true表示推送目标与客户端registration_id进行比较,如果一致则继续展示,不一致则就丢弃;false表示不校验

一个批量单推接口的messages参数范例

[
	// 传入两个推送目标和推送内容,将会产生两条单推推送消息
	{
		"target_type":2,
		"target_value":"CN_906bf7b0d76a5c0001668ddc410ab903",
		"notification":{
			"title":"Hello World-1",
			"content":"Hello World message-1"
		}
	},
	{
		"target_type":2,
		"target_value":"CN_b457331fd7874d0200c595ebb8d39de8",
		"notification":{
			"title":"Hello World-2",
            "content":"Hello World message-2"
        }
]

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString请求响应信息
dataString返回值,JSON类型

推送请求调用成功响应示例:

{
     code: 0,
     message: "",
     data: [
         {
               messageId: xxxxxxxxx, // 消息Id
               registrationId: xxxxxxxxx
        }, {
               messageId: xxxxxxxxx, // 消息Id
               registrationId: xxxxxxxxx
       }, {
               messageId: xxxxxxxxx, // 消息Id
               registrationId: xxxxxxxxx, // 消息Id
               errorCode: 10000, // 失败码
               errorMessage: xxxx // 失败说明
       }
    ]
}

返回码(code)

Code英文描述中文描述
10000Invalid Registration_idregistration_id格式不正确

OPPO推送服务端设置广播推送

OPPO推送服务端设置广播推送

广播推送

OPPO PUSH提供广播和单点推送两种下发消息的方式。以下是这两种推送方式的介绍及具体的API使用方式。

广播推送

广播推送主要用于向大批量用户推送同一条消息的场景,例如标签推送、大批量的注册ID推送等。一般情况下,广播消息会在同一时间向这批目标设备推送消息,如果设置了定速推送,则按照给定的速度均匀向圈定的目标推送消息。
使用广播推送,需要先在OPPO PUSH保存一条广播消息体,再通过创建好的消息体对应的消息ID,调用OPPO PUSH的广播推送接口推送该条消息。

保存通知栏消息内容体

接口详情

描述内容
接口功能保存消息内容体,获取消息Id
请求方法POST
请求编码UTF-8
Content-Typeapplication/x-www-form-urlencoded
请求路径/server/v1/message/notification/save_message_content

请求参数

除了共有的鉴权参数外,消息体内容的参数均以key-value的形式填写在HTTP请求的body中。

名称类型必须描述
auth_tokenstring鉴权令牌,详见鉴权一章。

消息体内容参数:参数主要围绕消息体的具体内容,以及推送的方式,消息体内容参数设置详情可查看通知栏消息

响应参数

调用接口后,OPPO PUSH会响应JSON格式的字符串,包含以下字段:

名称类型必须描述
codeInt返回码,具体含义请参考调用地址,公共参数和返回码一章。
messageString响应信息描述
dataStringJSON格式的响应返回值,成功调用将包含消息ID,后续需要使用消息ID来进行广播消息推送。

响应示例

{
    "code": 0,
    "message": "success",
    "data": {
        "message_id": "58ad47319e8d725350a5afd5" //消息ID
      }
}

调用广播推送

接口详情

描述内容
接口功能发送通知栏消息
请求方法POST
Content-Typeapplication/x-www-form-urlencoded
请求编码UTF-8
请求路径/server/v1/message/notification/broadcast

请求参数

名称类型必须默认描述
auth_tokenstring鉴权令牌,详见鉴权一章。
message_idString消息ID。
消息ID是调用保存消息体接口成功后响应的唯一标识。
广播通知栏消息ID的格式为AppID-1-3-ObjectID,如ZngnvJIM7wQusNtbqYnpH6XX-1-3-622ea78f923805b1389e61c2,其中ZngnvJIM7wQusNtbqYnpH6XX是某个业务的AppID,622ea78f923805b1389e61c2是这条消息在Push的唯一ID。
target_typeShort目标类型。
接受一个short类型数字,目前推送目标可指定以下几种:
2:表示推送目标为注册ID类型,
5:表示推送目标为别名类型,
6:表示推送目标按照标签对应的用户群圈定;
target_valueString具体的推送目标用户信息,根据推送目标类型有不同的传入方式:
1.注册ID类型或别名类型的推送。这两种类型一次调用可传入最多1000个目标,目标之间以英文字符 ; 为分隔符。如传入注册ID目标列表,字符串可表示为 “RegID1;RegID2;RegID3”, 或者别名名单 “Alias1;Alias2;Alias3” 。

标签:
2.标签推送。标签推送的目标值使用标签表达式。
标签表达式由一个或多个指令组合而成,一个指令包括组合字段和标签名单,表示若干个标签的组合搭配。
假设有一个标签表达式,标签表达式的配置和计算规则如下:
{ “or” : [ “tagID1”, ” tagID2″ ], “and” : [ “tagID3”, “tagID4”], “not” : [ “tagID5”, “tagID6”] }
表达式逻辑计算如下:
计算 “or” 字段的结果,得到tagID1和tagID2的并集A;计算 “and” 字段的结果 tagID3和tagID4的交集B;
计算 “not” 字段的结果 (tagID5和tagID6的并集C’)的非集=C最后计算所有A和B和C的交集。
最终结果为 (tagID1 ∪ tagID2)∩(tagID3 ∩ tagID4)∩(¬(tagID5 ∩ tagID6))

响应参数(JSON)

名称类型必须描述
codeInt返回码,具体含义请参考调用地址,公共参数和返回码一章
messageString响应信息描述
dataStringJSON格式的响应返回值,成功调用将包含消息ID和任务ID。

推送请求调用成功响应示例

{
    code:0,
    message: "success",
    data : {
        message_id : xxxxxxxxx // 消息Id
        task_id : xxxxxxxxx // taskId
    }
}

如果推送目标存在问题,会根据对应异常的目标进行响应,示例如下:

{
    code:0,
    message: "",
    data : {
        message_id : xxxxxxxxx, // 消息ID
        task_id:XXXXXXXXXX,     //推送任务ID
        // 部分目标有异常,将以 错误码——对应目标名单的形式返回
        "10000": [
            "J0476035d625e6c64567f71487e040e7d017f0558675b",
            "J0476045d625e6c64567f71487e040e7d017f0558675b",
            "J0476035d625e6sd64567f71487e040e7d017f0558675b"
        ]
   }
}

返回码(code)

Code英文描述中文描述
10000Invalid Registration_idregistration_id格式不正确

OPPO开放平台OPPO消息推送标签管理

OPPO开放平台OPPO消息推送标签管理

标签管理

添加标签

接口

环境HTTPS请求地址备注
生产环境https://api-device.push.heytapmobi.com/设备API
沙箱环境暂无
描述内容
接口功能新增标签
请求方法POST
Content-Typeapplication/json
请求编码UTF-8
请求路径/server/v1/device/add_tags

请求参数

名称类型必须默认描述
nameString标签名称,字符长度50字符
descString标签描述,字符长度200字符

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体

响应示例

{
    "code": 0,
    "message": "success"
}

添加标签组

接口

描述内容
接口功能新增标签,app全局最多可新增1000个标签组
请求方法POST
Content-Typeapplication/json
请求编码UTF-8
请求路径/server/v1/device/add_tag_group

请求参数

名称类型必须默认描述
groupString标签组名称
tagsString标签列表,单个标签组最多可设置50个标签;多个标签之间使用英文分号分隔
descString标签描述

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体

响应示例

{
    "code": 0,
    "message": "success"
}

标签订阅接口

接口

描述内容
接口功能为指定设备绑定标签
请求方法POST
Content-Typeapplication/json
请求编码UTF-8
请求路径/server/v1/device/subscribe_tags

请求参数

名称类型必须默认描述
registration_idStringNull注册ID
tagsStringNull标签内容,多个标签之间使用英文分号分隔,单个标签字节长度50字符; 限制:单次调用接口可设置50个标签;单个用户总量上限也是50个标签 这个接口可重复调用,多次调用不会清理原来设置的标签

响应参数(JSON)

名称类型必须描述
codeInt 是返回码,请参考公共返回码与接口返回码
messageString错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体

响应示例

{
    "code": 0,
    "message": "success",
}

取消标签订阅接口

接口

描述内容
接口功能取消订阅标签
请求方法POST
Content-Typeapplication/json
请求编码UTF-8
请求路径/server/v1/device/unsubscribe_tags

请求参数

名称类型必须默认描述
registration_idStringNull注册ID
tagsStringNull标签内容,多个标签之间使用分号分隔 限制:单次调用接口可删除50个标签

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString 否错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体

响应示例

{
    "code": 0,
    "message": "success"
}

查询所有标签

接口

描述内容
接口功能查询该设备所有标签
请求方法POST
Content-Typeapplication/json
请求编码UTF-8
请求路径/server/v1/device/get_all_tags

请求参数

名称类型必须默认描述
registration_idStringNull注册ID

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体

响应示例

{
    "code": 0,
    "message": "success",
    "data": {
        "registrationId": "58ad47319e8d725350a5afd5",
        "tags": [
            {
                "tag": "深圳"
            },
            {
                "tag": "广州"
            }
        ]
    }
}

OPPO开放平台消息推送设置别名管理方法

OPPO开放平台消息推送设置别名管理方法

别名管理

别名(Alias)是OPPO PUSH提供的一项用户设备映射功能。通过别名,开发者可以为注册ID建立一个方便自己管理的别名,在推送消息时,可以通过别名推送的方式,传入设置好的别名,OPPO PUSH会把别名转化为注册ID并正确下发。OPPO PUSH提供了创建别名,删除别名和查询别名三个与别名相关的管理接口。

创建别名

接口

环境HTTPS请求地址备注
生产环境https://api-device.push.heytapmobi.com/设备API
沙箱环境暂无
描述内容
接口功能建立registration_id与alias的相互的一对一映射关系,需要注意的是,一个别名仅与一个注册ID构成映射关系,如果对同一个别名注册多个不同的注册ID映射,服务将为最近一次的注册行为建立映射关系并覆盖原有的所有映射。
请求方法POST
Content-Typeapplication/json
请求编码UTF-8
请求路径/server/v1/device/set_alias

请求参数

名称类型必须默认描述
registration_idStringNull注册ID
aliasStringNull别名内容(仅支持单值,与注册ID一一对应),最大64字符(不能输入分号)

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体

成功的响应示例

{
    "code": 0,
    "message": "success"
}

失败的响应示例

{
    "code": -1,
    "message": "Service Currently Unavailable"
}

删除别名

接口

描述内容
接口功能删除别名
请求方法POST
Content-Typeapplication/json
请求编码UTF-8
请求路径/server/v1/device/delete_alias

请求参数

名称类型必须默认描述
registration_idStringNull注册ID registration_id与alias不同时为空 registration_id与alias皆不为空时,registration_id优先于alias
aliasStringNull别名(仅支持单值,与注册ID一一对应) registration_id与alias不同时为空 registration_id与alias皆不为空时,registration_id优先于alias

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体

成功的响应示例

{
    "code": 0,
    "message": "success"
}

失败的响应示例

{
    "code": -1,
    "message": "Service Currently Unavailable"
}

查询别名

接口

描述内容
接口功能查询别名
请求方法POST
Content-Typeapplication/json
请求编码UTF-8
请求路径/server/v1/device/get_alias

请求参数

名称类型必须默认描述
registration_idString注册ID

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体

成功的响应示例

{
    "code": 0,
    "message": "success",
    "data": {
        "registrationId": "58ad47319e8d725350a5afd5",
        "alias": "AliasName"
    }
}

失败的响应示例

{
    "code": -1,
    "message": "Service Currently Unavailable"
}

OPPO开放平台 OPPO推送独立接口上传图片

OPPO开放平台 OPPO推送独立接口上传图片

上传图片

OPPO PUSH提供携带图片的消息推送能力,在使用图片推送前,需要先将图片上传到OPPO PUSH服务端,由OPPO PUSH服务端统一处理存储,推送消息时使用上传成功的图片ID作为图片索引,由OPPO PUSH服务将图片组装为消息体的内容部分并下发。

上传大图

接口

环境HTTPS请求地址备注
生产环境https://api-media.push.heytapmobi.com/媒体服务
沙箱环境暂无
描述内容
接口功能上传图片
请求方法POST
请求编码UTF-8
Content-Typemultipart/form-data
请求路径/server/v1/media/upload/big_picture

请求参数

图片文件按照multipart/form-data标准携带图片文件,图片要求尺寸876*324 px,文件大小1M以内,格式为PNG/JPG/JPEG。

名称类型必须默认描述
FILE图片文件
picture_ttlInt86400图片保存的存活时间(time_to_live) (单位:秒),最长30天

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体
{
    "code": 0,
    "message": "success",
    "data": {
        "big_picture_id": xxxxxxxxx //大图id
      }
}

上传图标

接口

描述内容
接口功能上传图片
请求方法POST
请求编码UTF-8
Content-Typemultipart/form-data
请求路径/server/v1/media/upload/small_picture

请求参数

图片文件按照multipart/form-data标准携带图片文件,图片要求尺寸144*144 px,文件大小为50k以内,格式为PNG/JPG/JPEG

名称类型必须默认描述
FILE图片文件
picture_ttlInt86400图片保存的存活时间(time_to_live) (单位:秒),最长30天

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体

响应示例

{
    "code": 0,
    "message": "success",
    "data": {
        "small_picture_id": xxxxxxxxx, //图标id
      }
}

OPPO开放平台 消息回执说明

OPPO开放平台 消息回执说明

消息回执

消息回执是OPPO PUSH提供给开发者获知消息送达状态的功能。由于推送消息请求是异步调用,调用请求接口成功仅表示消息成功开始下发,不代表消息最终的推送状态,因此OPPO PUSH在后续的消息推送流程中捕获重要事件,并通过HTTP请求的形式反馈给开发者,这个功能成为消息回执功能。

开启和配置消息回执

要使用消息回执功能,开发者在推送每条消息时需要在对应的请求字段中配置回执参数,目前回执参数主要有两个,一个是开发者接受OPPO PUSH回执HTTP请求的目标地址URL,以及这个回执请求携带的URL参数。

回执参数是归属于消息体内容的参数,和其他消息体参数一样,按照不同推送方式,在创建广播消息体或在单点推送接口中正确配置配置参数即可获取消息的回执。

以下是回执参数说明:

名称类型是否必填默认描述是否支持单推
call_back_urlString* 仅支持registrationId推送方式 *
开发者接收消息送达的回执消息的URL地址。
OPPO PUSH提供消息回执的功能,消息回执的功能是指消息送达后,OPPO PUSH基于HTTP/HTTPS请求的方式告知开发者对应消息的送达情况。
要使用回执功能,开发者需要配置回执目标地址的URL参数,URL长度限制在限制200以内。
以下是一个使用回执的示例:
1.开发者配置本参数
2.消息到达设备后,OPPO PUSH根据本参数,向这个URL以
Content-Type为application/json的方式发送一个HTTP/HTTPS请求。请求内容的示例如下
JSON 数据示例:
[
{
“messageId”: “msgId1”, // 到达的消息ID
“appId”: “appid”, // 对应的应用ID
“taskId”: “taskId1”, // 如果是广播消息,对应taskID;如果是单推消息,该字段为消息ID
“registrationIds”: “regId1, regid2”, // 消息的推送目标注册ID
“eventTime”: “timestamp”, // 回执事件产生时间
“param”: “call_back_parameter”, // 开发者指定的回执参数
“eventType”: “push_arrive” // 到达事件,消息到达的事件被定义为push_arrive
},
// 对于完全一致的URL地址,OPPO PUSH可能会将相同URL地址回执信息在一个HTTP/HTTPS请求中发送,因此body里是一个长度大于等于1的JSON数组
{
“messageId”: “msgId1”,
“appId”: “appid”,
“taskId”: “taskId1”,
“registrationIds”: “regId1,regid2”,
“eventTime”: “timestamp”,
“param”: “call_back_parameter”,
“eventType”:
“push_arrive”
}
]
call_back_parameterString开发者指定的自定义回执参数。
数字符串长度限制在100以内,OPPO PUSH将这个参数设置在回执请求体单个JSON结构的param字段中。

回执事件

OPPO PUSH 有如下回执事件

回执事件含义触发条件备注
push_arrive表明消息成功到达设备消息成功到达设备,OPPO PUSH客户端向服务端反馈已经收到该条消息。表示消息到达OPPO PUSH客户端,不包含通知栏的展示,点击等后续动作含义。
regid_invalid无效的RegistrationID应用被卸载、应用自动注销、用户设备刷机、设备30天内未联网会导致RegistrationID失效开发者接收到无效RegistrationID的回执后可以做剔除或者过滤处理,减少无效推送

OPPO开放平台 推送通知栏消息 参数说明

OPPO开放平台 推送通知栏消息 参数说明

通知栏消息

名称类型是否必填默认描述是否支持单推
app_message_idStringApp开发者自定义消息Id,主要用于消息去重。
对于广播消息,相同app_message_id只会保存一条;
对于单推消息,相同app_message_id的消息只会对同一个目标推送一次。
styleInt1通知栏样式
1. 标准样式
2. 长文本样式
(ColorOS版本>5.0可用,通知栏第一条消息可展示全部内容,非第一条消息只展示一行内容)3. 大图样式
(ColorOS版本>5.0可用,通知栏第一条消息展示大图,非第一条消息不显示大图,推送方式仅支持广播,且不支持定速功能)。
big_picture_idString大图id【style为3时,必填】,通过上传大图接口获得大图id后可使用。
上传大图接口请参考服务端API介绍章节
small_picture_idString通知图标id,通过上传小图接口获得小图id后可使用。
上传小图接口请参考服务端API介绍章节。
titleString设置在通知栏展示的通知栏标题, 【字数串长度限制在50个字符内,中英文字符及特殊符号(如emoji)均视为一个字符】
sub_titleString子标题,设置在通知栏展示的通知栏标题, 【字符串长度限制在10个字符以内,中英文字符及特殊符号(如emoji)均视为一个字符计算】
contentString设置在通知栏展示的通知的正文内容
1)当选择标准样式(style 设置为 1)时,内容字符串长度限制在200以内;
2)当选择长文本样式(style设置 为 2)时,内容字符串长度限制在128以内;
3)当选择大图样式(style 设置为 3)时,内容字符串长度限制在50以内。
【字符串长度计算说明:中英文字符及特殊符号(如emoji)均视作一个字符计算】
click_action_typeInt0点击通知栏后触发的动作类型。
点击动作类型值的定义和含义如下:
0.启动应用;
1.跳转指定应用内页(action标签名);
2.跳转网页;
4.跳转指定应用内页(全路径类名);【非必填,默认值为0】;
5.跳转Intent scheme URL
click_action_activityStringNull当设置click_action_type为1或者4时,需要配置本参数。
应用内页地址【click_action_type为1/4/时必填,长度500】
示例:
假设应用注册了类名为InternalActivity的activity,应用内页的xml配置如下

当开发者期望消息被点击后跳转到这个应用内页,可以有两种方法传递参数:
指定click_action_type为1时,click_action_activity传入com.coloros.push.demo.internal
指定click_action_type为4时,click_action_activity传入com.coloros.push.demo.component.InternalActivity
click_action_urlStringNull跳转URL,当跳转的形式为URL时,click_action_type参数需要设置为2或5,同事设置本参数。本参数接受最大长度2000以内的URL。
示例:
click_action_type为2时,本参数可设置为http://oppo.com?key1=val1&key2=val2click_action_type为5时,本参数可设置为command://test?key1=val1&key2=val2
action_parametersStringNull跳转动作参数。
打开应用内页或网页时传递给应用或网页的附加参数【JSON格式】,字符串长度不超过4000。当跳转类型是URL类型时,参数会以URL参数直接拼接在URL后面。
示例:{“key1”:“value1”,“key2”:“value2”}
show_time_typeInt0通知栏展示类型。展示类型如下
0:即时展示
1:定时展示
show_start_timeLong0定时展示的开始时间。
选择定时展示后,消息将于设定的开始时间到结束时间之内展示。
本参数接受13位的unix时间戳。
show_end_timeLong0定时展示的结束时间。
选择定时展示后,消息将于设定的开始时间到结束时间之内展示。
本参数接受13位的unix时间戳。
off_lineBooleanTRUE是否是离线消息。
如果是离线消息,OPPO PUSH在设备离线期间缓存消息一段时间,等待设备上线接收。
off_line_ttlInt3600离线消息的存活时间,单位是秒。存活时间最大允许设置为10天,参数超过10天以10天传入。
push_time_typeInt0定时推送 (0, “即时”),(1, “定时”), 【只对全部用户推送生效】
push_start_timeLong0定时推送开始时间(根据time_zone转换成当地时间), 【push_time_type 为1必填】,时间的毫秒数
time_zoneStringGMT+08:00时区,默认值:(GMT+08:00)北京,香港,新加坡
fix_speedBooleanFALSE是否定速推送。广播类型消息专用,如果设置定速推送,消息将会以给定的速度均匀下发。
fix_speed_rateLong1000定速推送的速率,单位为条每秒。
指定消息为定速推送消息时,需要指定本参数。
定速推送速率范围在[1000, 10000]。
network_typeInt0推送的网络环境类型。
本参数将影响用户设备仅在指定类型的网络环境下接收消息。
参数定义如下:
0:不限联网方式;
1:仅wifi推送,设置后,消息只会在用户处于WiFi环境下才下发。
call_back_urlString回执功能详见回执一章仅支持registrationId推送方式开发者接收消息送达的回执消息的URL地址。
OPPO PUSH提供消息回执的功能,消息回执的功能是指消息送达后,OPPO PUSH基于HTTP/HTTPS请求的方式告知开发者对应消息的送达情况。
要使用回执功能,开发者需要配置回执目标地址的URL参数,URL长度限制在限制200以内。
以下是一个使用回执的示例:
1.开发者配置本参数
2.消息到达设备后,OPPO PUSH根据本参数,向这个URL以Content-Type为application/json的方式发送一个HTTP/HTTPS请求。

请求内容的示例如下JSON 数据示例:
[
{
“messageId”: “msgId1”, // 到达的消息ID
“appId”: “appid”, // 对应的应用ID
“taskId”: “taskId1”, // 如果是广播消息,对应taskID;如果是单推消息,该字段为消息ID
“registrationIds”: “regId1, regid2”, // 消息的推送目标注册ID
“eventTime”: “timestamp”, // 回执事件产生时间
“param”: “call_back_parameter”, // 开发者指定的回执参数
“eventType”: “push_arrive” // 到达事件,消息到达的事件被定义为push_arrive
},
// 对于完全一致的URL地址,OPPO PUSH可能会将相同URL地址回执信息在一个HTTP/HTTPS请求中发送,因此body里是一个长度大于等于1的JSON数组
{ “messageId”: “msgId1”,
“appId”: “appid”,
“taskId”: “taskId1”,
“registrationIds”: “regId1,regid2”,
“eventTime”: “timestamp”,
“param”: “call_back_parameter”,
“eventType”: “push_arrive”
}
]
call_back_parameterString开发者指定的自定义回执参数。
参数字符串长度限制在100以内,OPPO PUSH将这个参数设置在回执请求体单个JSON结构的param字段中。
channel_idStringOPPO PUSH 提供的默认通道ID指定下发的通道ID。
通知栏通道(NotificationChannel),从Android9开始,Android设备发送通知栏消息必须要指定通道ID,(如果是快应用,必须带置顶的通道Id:OPPO PUSH推送)
show_ttlInt86400限时展示时间(单位:秒)。
消息在通知栏展示后开始计时,展示时长超过展示事件后,消息会从通知栏中消失。
显示展示的时间范围在6小时到48小时之间,默认24小时。
notify_idInt由OPPO PUSH生成每条消息在通知显示时的唯一标识,主要用于新旧消息的覆盖。不设置本参数时,PUSH自动为给每条消息生成一个唯一标识;
当不同的消息设置为同一个notify_id,到达设备的新消息将覆盖旧消息展示在设备通知栏中。
auditResponseJSONnull推必安信息审核api响应内容,详见《基于第三方审核结果的消息推送》支持

OPPO推送能力开发 调用地址,公共参数和返回码

OPPO推送能力开发 调用地址,公共参数和返回码

请求地址

OPPO PUSH提供以下三个请求URL地址,分别提供国内的消息推送服务,海外消息推送服务,以及国内环境的其他非推送的反馈功能。

环境HTTPS请求地址备注
国内环境https://api.push.oppomobile.com/对国内设备推送消息
海外环境https://api-intl.push.oppomobile.com/对海外设备推送消息
国内环境https://feedback.push.oppomobile.com/反馈功能

如何区分国内设备:
RegistrationID 使用“_”符号分隔成数组。
数组大小为1:regId属于国内;如:b6bbd94b59cdb5df8391642c1509b7fe
数组大小为2:第一个值为“CN”,属于国内;如:CN_b6bbd94b59cdb5df8391642c1509b7fe
数组大小为3:第二个值为“CN”,属于国内;如:OPPO_CN_b6bbd94b59cdb5df8391642c1509b7fe

公共参数

公共参数是所有请求都需要携带的参数。

名称类型默认描述
auth_tokenString必填鉴权令牌
auth_token有效期为24小时,过期后无法使用,在HTTP请求体中携带该参数。 鉴权令牌通过调用鉴权接口可以获得,详情请参考鉴权章节。

返回码

返回码是携带在接口响应的code字段中,范围在(-1-100)的数字,通过返回码可以判断接口调用的结果。表示错误的返回码一般是由于用户的请求不符合调用规范引的。用户遇到这些错误的返回,建议先检查应用的接入权限,推送权限是否正常,以及是否按照参数各式和限制正确设置请求参数。

Code英文描述中文描述
-2Service in Flow Control服务器流量控制
-1Service Currently Unavailable服务不可用,此时请开发者稍候再试
0Success成功,表明接口调用成功
11Invalid AuthToken不合法的AuthToken
12Http Action Not AllowedHTTP 方法不正确
13App Call Limited应用调用次数超限,包含调用频率超限
14Invalid App Key无效的AppKey参数
15Missing App Key缺少AppKey参数
16Invalid Signaturesign校验不通过,无效签名
17Missing Signature缺少签名参数
18Missing Timestamp缺少时间戳参数
19Invalid Timestamp非法的时间戳参数
20Invalid Method不存在的方法名
21Missing Method缺少方法名参数
22Missing Version缺少版本参数
23Invalid Version非法的版本参数,用户传入的版本号格式错误,必需为数字格式
24Unsupported Version不支持的版本号,用户传入的版本号没有被提供
25Invalid Encoding编码错误,一般是用户做http请求的时候没有用UTF-8编码请求造成的
26IP Black ListIP黑名单
27Access Denied没有此功能的权限,拒绝访问
28App Disabled应用不可用
29Missing Auth Token缺少Auth Token参数
30Api Permission Denied该应用没有API推送的权限
31Data Not Exist数据不存在
32Data Duplicate数据重复
33The number of messages exceeds the daily limit消息条数超过日限额
34The number of upload pictures exceeds the daily limit上传图片超过日限额
40Missing Required Arguments缺少必选参数,API文档中设置为必选的参数是必传的,请仔细核对文档
41Invalid Arguments参数错误,一般是用户传入参数非法引起的,请仔细检查入参格式、范围是否一一对应
51Invalid Picture图片无效,一般是图片格式、图片分辨率、图片大小不符合格式及图片未上传等,请仔细检查图片格式及上传文件方式。

业务级错误问题:
请求后端业务服务器出现的问题,返回的错误码在10000到20000之间,具体业务错误码可参见广播推送、单点推送等接口。 每个接口最多10个返回码

OPPO开放平台 消息推送服务端鉴权 方法

OPPO开放平台 消息推送服务端鉴权 方法

鉴权

开发者通过OPPO PUSH服务端的鉴权接口验证合法身份,并获得权限令牌。其他所有的API请求都需要在HTTP body中携带auth_token字段以进行合法的服务调用。为保证安全性,令牌具有一定的时效性,因此调用者也需要定时更新自己的权限令牌。本文后续接口默认都认为已携带该参数。

鉴权接口

描述内容
接口功能开发者身份鉴权,获得令牌。
请求方法POST
请求编码UTF-8
Content-Typeapplication/x-www-form-urlencoded
请求路径/server/v1/auth

请求参数

以下参数均在HTTP body中携带

名称类型默认描述
app_keyString必填OPPO PUSH发放给合法应用的AppKey。
signString必填加密签名。
是用AppKey、当前时间戳毫秒数、MasterSecret拼接而成的字符串并用SHA256加密而成的字符串。
MasterSecret是注册应用时OPPO PUSH发放的服务端密钥,与AppKey对应
timestampLong必填当前时间的unix时间戳。
格式为13位时间毫秒数,时区采用GMT+8。
需要使用最近一小时内的时间戳,否则会导致鉴权失败

请求响应

返回结果携带在HTTP响应的body中,整个body内容是JSON格式。

名称类型描述
codeInt返回码,具体含义请参考返回码描述(增加超链接)
messageString请求响应结果的文字描述
dataJSON返回值,JSON类型,包含了具体的鉴权结果

响应示例:

{
    "code": 0,
    "message": "success",
    "data": {
        //权限令牌,推送消息时,需要提供auth_token,有效期默认为24小时,过期后无法使用
        "auth_token": "58ad47319e8d725350a5afd5" 
         "create_time": "时间毫秒数"
      }
}

OPPO推送服务端 Java SDK集成

OPPO推送服务端 Java SDK集成

接入准备

运行环境

SDK使用Java编写,接入前需确认是否安装Java环境并且版本为1.7及以上

获取SDK

1)开发者需要登录推送运营平台获取应用的AppKey, MasterSecret
2)下载SDK相关包:OPush_JAVA_SDK.zip

导入SDK

1)解压已下载的SDK包
2)将文件夹下所有jar文件放入项目工程的libs目录
3)刷新工程,确保文件出现在libs目录下。如果没有的话请手动添加

SDK类定义说明

类名使用说明
Sender发送消息工具类,可以发送单推、批量单推、广播消息
Environment枚举类
Environment.CHINA_PRODUCTION 中国
Environment.INTERNATIONAL 海外
Notification通知栏消息
Target推送目标类,包含推送目标类型、推送目标
TargetType推送目标类型,支持registration_id推送类型
Result服务器返回的结果
ReturnCode返回的状态码,根据这个状态可以自检请求参数的是否合法
ReturnCode.ErrorCode平台返回的状态码枚举类

详情见SDK javadoc

接入SDK示范

创建sender对象

SDK提供Sender类封装了OPPO Push推送服务的各类服务接口。因此,使用SDK推送消息或调用其他服务,首先要创建Sender对象。

// 使用appKey, masterSecret创建sender对象(每次发送消息都使用这个sender对象)
Sender sender = Sender.newBuilder()
        .appKey("appKey") // 设置appKey
        .masterSecret("masterSecret") // 设置masterSecret
        .env(Environment.CHINA_PRODUCTION)  // 中国
        .httpMaxConnection(64) // 设置http最大连接数
        .httpMaxRoute(64)   // 设置最大http路由连接数
        .httpConnectionTimeout(5000) // http连接超时时间
        .httpConnectRequestTimeout(5000) // 等待连接超时时间
        .httpSocketTimeout(5000) // socket超时时间
        .build();

推送消息

创建通知栏消息体

推送消息前,需要构造消息内容,SDK提供Notification类供开发者设置消息内容。

/**
 * 这是构造一个通知栏消息体Notification对象的实例方法。
 * 请注意,后续的例子会调用这个getNotification()方法
 * */
private Notification getNotification() {
    Notification notification = new Notification();
    
    // 标题,内容是必填项
    notification.setTitle("通知栏消息tile");
    notification.setContent("通知栏内容");

    /*
     * 以下参数非必填项,参考OPPO push服务端api文档进行设置,本示例选取部分参数进行示范
     */
    //通知栏样式 1. 标准样式  2. 长文本样式  3. 大图样式 【非必填,默认1-标准样式】
    notification.setStyle(1);
    // App开发者自定义消息Id,OPPO推送平台根据此ID做去重处理,对于广播推送相同appMessageId只会保存一次,对于单推相同appMessageId只会推送一次
    notification.setAppMessageId(UUID.randomUUID().toString());
    // 应用接收消息到达回执的回调URL,字数限制200以内,中英文均以一个计算
    notification.setCallBackUrl("http://www.test.com");
    // App开发者自定义回执参数,字数限制50以内,中英文均以一个计算
    notification.setCallBackParameter("");
    // 点击动作类型0,启动应用;1,打开应用内页(activity的intent action);2,打开网页;4,打开应用内页(activity);【非必填,默认值为0】;5,Intent scheme URL
    notification.setClickActionType(4);
    // 应用内页地址【click_action_type为1或4时必填,长度500】
    notification.setClickActionActivity("com.coloros.push.demo.component.InternalActivity");
    // 网页地址【click_action_type为2必填,长度500】
    notification.setClickActionUrl("http://www.test.com");
    // 动作参数,打开应用内页或网页时传递给应用或网页【JSON格式,非必填】,字符数不能超过4K,示例:{"key1":"value1","key2":"value2"}
    notification.setActionParameters("{\"key1\":\"value1\",\"key2\":\"value2\"}");
    // 展示类型 (0, “即时”),(1, “定时”)
    notification.setShowTimeType(1);
    // 定时展示开始时间(根据time_zone转换成当地时间),时间的毫秒数
    notification.setShowStartTime(System.currentTimeMillis() + 1000 * 60 * 3);
    // 定时展示结束时间(根据time_zone转换成当地时间),时间的毫秒数
    notification.setShowEndTime(System.currentTimeMillis() + 1000 * 60 * 5);
    // 是否进离线消息,【非必填,默认为True】
    notification.setOffLine(true);
    // 离线消息的存活时间(time_to_live) (单位:秒), 【off_line值为true时,必填,最长3天】
    notification.setOffLineTtl(24 * 3600);
    // 时区,默认值:(GMT+08:00)北京,香港,新加坡
    notification.setTimeZone("GMT+08:00");
    // 0:不限联网方式, 1:仅wifi推送
    notification.setNetworkType(0);
    return notification;
}

推送单推通知栏消息

// 创建通知栏消息体
Notification notification = getNotification(); 
// 创建推送目标对象,传入注册ID
Target target = Target.build("CN_8fa0618f178145d8c2a44091a1326411"); 
// 调用单推接口,推送消息,获得调用结果
Result result = sender.unicastNotification(notification, target); 
// 获取http请求状态码
result.getStatusCode(); 
// 获取平台返回码
result.getReturnCode(); 
// 获取平台返回的messageId
result.getMessageId();  

推送批量单推通知栏消息

// batch最大长度为1000,超出会导致请求失败
Map batch = new HashMap(); 
// 创建目标对象并加入到批量队列中
batch.put(Target.build("CN_ddfaa7db1e4ecf75014143bdbc3e53ea"), getNotification());
batch.put(Target.build("CN_8fa0618f178145d8c2a44091a1326411"), getNotification());
// 调用批量单推接口,推送消息,获得调用结果
Result result = sender.unicastBatchNotification(batch); 
// 获取http请求状态码
result.getStatusCode(); 
// 获取平台返回码
result.getReturnCode(); 
// 获取对应批量单推结果
List batchResult = result.getUnicastBatchResults(); 
for (Result.UnicastBatchResult record : batchResult) {
    record.getMessageId();
    record.getErrorCode();
    record.getErrorMessage();
    record.getTargetValue();
}

保存和发送广播通知栏消息

/**
 * 推送广播消息分为两步
 * 首先调用保存消息体接口,保存广播消息内容,得到消息ID
 * 使用消息ID调用广播推送接口,推送广播消息
 * */

// 创建通知栏消息体
Notification broadNotification = getNotification();

// 发送保存消息体请求
Result saveResult = sender.saveNotification(broadNotification); 
// 获取messageId
String messageId = saveResult.getMessageId(); 
// 获取http请求状态码
saveResult.getStatusCode(); 
// 获取平台返回码
saveResult.getReturnCode(); 


// 创建推送目标 广播目标接受多个注册ID,字符串中以英文分号';'分割
Target target = new Target(); 
target.setTargetValue("CN_ddfaa7db1e4ecf75014143bdbc3e53ea;CN_8fa0618f178145d8c2a44091a1326411");

// 发送广播消息
Result broadResult = sender.broadcastNotification(messageId, target); 
// 获取广播taskId
broadResult.getTaskId(); 
List errorList = broadResult.getBroadcastErrorResults();
// 如果大小为0,代表所有目标发送成功
if (errorList != null && errorList.size() > 0) { 
    for (Result.BroadcastErrorResult error : errorList) {
        // 错误码
        error.getErrorCode(); 
        // 目标
        error.getTargetValue(); 
    }
}

上传图片

如果要推送带图片的消息,需要先上传图片。
注意:仅广播通知栏消息 支持图片推送功能。

上传大图

// 指定图片文件
File bigPicture = new File("大图文件路径");
// 图片过期时间(单位秒),最长30天 
int bigPictureTtl = 86400; 
// 使用Sender调用上传大图接口 
Result uploadBigPicResult = sender.uploadBigPicture(bigPictureTtl, bigPicture); 
// 获取大图id,保存消息体填入
String bigPictureId = uploadBigPicResult.getBigPictureId(); 

// 创建消息体时选择图片推送消息类型(3表示图片推送),并传入图片ID
Notification notification = getNotification();
notification.setStyle(3);
notification.setBigPictureId(bigPictureId);

// 执行保存消息体,广播推送等后续操作
// save and send notification ...

上传图标

// 指定图片文件
File smallPicture = new File("小图文件路径");
// 图片过期时间(单位秒),最长30天
int smallPictureTtl = 86400;  
// 使用Sender对象调用上传小图接口
Result uploadSmallPicResult = sender.uploadSmallPicture(smallPictureTtl, smallPicture);
// 获取小图id,保存消息体
String smallPictureId = uploadSmallPicResult.getSmallPictureId(); 

// 创建消息体时选择图片推送消息类型(3表示图片推送),并传入图片ID
Notification notification = getNotification();
notification.setStyle(3);
notification.set(smallPictureId);

// 执行保存消息体,广播推送等后续操作
// save and send notification ...

OPPO开放平台 OPPO推送SDK数据安全说明

OPPO开放平台 OPPO推送SDK数据安全说明

SDK工作方式

OPush SDK在打包时被集成到应用中,随应用启动而运行,当应用关闭时,SDK会随着应用关闭,不会在后台进行任何操作。

SDK权限说明

SDK需以下权限,具体集成方法请参考“Android SDK集成”

//网络相关
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
<uses-permission android:name="android.permission.INTERNET">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">

//鉴权
android:permission="com.heytap.mcs.permission.SEND_PUSH_MESSAGE"

SDK数据搜集

请参见 “推送个人信息保护政策”和 “个人数据处理说明

SDK数据安全保护

服务端鉴权,详情请见服务端“鉴权

APP 隐私政策声明

当您的应用集成本SDK后,需要在APP隐私政策中添加以下内容:
SDK名称:OPUSH SDK
使用目的:推送通知栏消息
使用方式:去标识,加密传输的安全方式
收集数据类型:设备信息、应用信息、网络信息

OPPO开放平台 推送私信通道申请

OPPO开放平台 推送私信通道申请

为了改善终端用户的通知体验,营造良好可持续的推送生态,OPPO推送对各个APP的push消息数量进行了限量管控;同时针对即时聊天/系统提醒等push需求可以申请走私信通道(该通道不限量);

消息分类说明

OPPO PUSH将消息分为私信消息和公信消息两类。
私信消息是针对用户有一定关注度,且希望能及时接收的信息,如即时聊天信息、个人订单变化、快递通知、订阅内容更新、评论互动、会员积分变动等,与单个用户信息强相关的内容;

私信消息场景概述
通讯信息用户间聊天消息(私信、私聊、群聊),包括聊天消息中的图片、文件传输、音/视频通话,不包括官方号或者商家批量推送给用户的私信、广告;
个人状态变化用户帐号上下线、帐号状态变化、帐号信息认证、等级权限变更等相关提醒。
个人财务提醒个人财务、交易相关事项提醒,包括收付款、银行到账&扣款、交易提醒、催缴&退款信息、充值、账单、贷款受理进度、还款/逾期提醒、资金冻结提醒、资金限制提醒、缴纳保证金提醒等。
个人设备提醒1、IoT设备发出的设备状态/信息/提示/告警等提醒消息。
2、监控设备监控动态及报警提醒;
个人资源变化用户个人的虚拟财产如积分/余额等变更提醒,以及增值服务的充值/到期/续费/到账提醒。
注意:
这里的虚拟财产必须是非促销类的, 促进用户增长的领金币或促销类红包/优惠券不属于重要消息。
个人订单状态变化及日程/邮件提醒1、生成订单相关信息  如:下单成功、司机接单提醒、卖家收到新订单、订单详情、订单状态、物流状态、订单售后、订单投诉处理进度、开票信息等;
2、日程提醒:登机、酒店入住、会议提醒等等。
3、邮件的发送、接收状态信息
个人手动关注的
某个主体内容更新
1、用户在App内主动设置的提醒信息并确认会收到推送,如:主动设置的开播提醒、书籍更新;
2、设置的商品或机票降价、商品开团提醒;主动关注的行情动态提醒;主动设置的签到打卡提醒;付费订阅内容更新提醒等。
注意:
1)关注的主播开播提醒、特别关注的帐号/作者发布动态才属于重要消息,普通关注的帐号/作者发布动态不属于重要消息。
2)被赞、被@、关注、转发、评论、回复等社交互动类消息属于普通消息,不属于重要消息,但用户对商家的点评提醒、老师对学生作业的评论提醒除外。

公信消息是针对用户关注度不高,且对于接收这类信息并无心理预期,如热点新闻、新品推广、平台公告、社区话题、有奖活动等,多用户普适性的内容;

公信消息场景概述
内容推荐非用户主动订阅,APP向用户推送的资讯、内容。如:微博、资讯、新闻、点评、小说、广告、视频、音频、直播等等
陌生人推荐大V、主播、异性、可能认识的人等
促销活动及推荐商品推广、宣传、折扣、红包、领劵、返现等优惠信息;推荐产品功能、服务更新,商品、商家、店铺推荐的内容,例如“您的授信额度增加”
业务到期提醒提醒用户保险、医疗、水电到期续保续费,或者话费、会员等月结日充值提醒等服务续期类推送
运营活动各类APP内非用户主动设置的需用户参与的活动提醒消息、小游戏提醒、服务或商品评价提醒等。 如:抽奖、积分、签到、任务、分享、偷菜、领金币等
社交动态用户之间的社交互动提醒,如:添加好友、被赞、被@、评论、留言、关注、转发、评论/回复
普通关注着的动态关注的人发布作品,如:关注的人直播提醒、动态更新

公信信道和私信信道权限对比

类型私信信道公信信道
推送数量限制不限量有公信类通道共享推送次数,当日达到推送量限制后,所有公信类通道将无法再推送消息;
推送限量:当累计用户数<50000时,按100000计算;当累计用户数≥50000时,累计用户数*2。
配置方式客户端适配通道、并且邮件申请通过后,需要在OPPO推送平台上登记该通道,并将通道对应属性设置为“私信”默认开通
服务端推送方法单点推送”api(服务端SDK对应unicastNotification、unicastBatchNotification方法),channel_id带上私信通道的通道ID“单点推送”和“广播推送”都支持;
消息类型限制私信消息(通过私信模板限制)不限制,公信消息/私信消息均可

创建私信通道

Step1:应用客户端开发在客户端创建私信通道,并记下通道名称和通道ID。

创建通道方式:通知通道(Channel)适配
注意:通道名称和通道ID需与申请表格内提交一致并确保后续消息下发时消息体与对应通道的模板相匹配。

Step2:将已创建通道的客户端发版。

Step3:开发者进行私信通道登记

用开发者帐号登陆push.oppo.com,进入应用,在【配置管理-通道配置-新建通道】,进行通道登记,“消息ID”和“通道名称”与客户端填写的一致,点击【确定】进行提交。

私信通道权益申请

1、私信通道首次申请

step1:填写私信模板

下载表格文档,并填制通道信息:
开通私信通道申请-APP名称-申请日期.xlsx

step2:发送邮件至push@oppo.com,标题及正文如下,同时附上私信模板Excel文档

邮件标题:私信通道开通申请——应用名称
邮件正文:
应用ID:XXX
应用名称:XXX
应用包名:XXX
私信专用通道名称:
私信专用通道ID:
业务接口人联系微信:
XX应用申请开通私信通道,并承诺遵守运营规则,仅在私信通道推送模板相关消息。
该通道对应的私信消息模板见附件:

提示:
1)如果之前没有创建过通道,则需要新建通道,因为根据规范Android8.0以上推送消息需要配置通道,否则消息可能无法触达用户。
2)“通讯信息”需单独开通一个私信通道,详见下方《无模板私信通道申请》

2、 新增模板申请:

当有新增的私信消息模板,请发送邮件至push@oppo.com进行记录,以免触发违规。

邮件标题:新增私信模板申请——应用名称
邮件正文:
应用ID:XXX
应用名称:XXX
应用包名:XXX
私信专用通道名称:
私信专用通道ID:
业务接口人联系微信:
XX应用申请开通私信通道,并承诺遵守运营规则,仅在私信通道推送模板相关消息。
该通道对应的私信消息模板见附件:

3、无模板私信通道申请

对于“通讯信息”类型,若可以提供对应的模板,则按照<1、私信通道首次申请>进行操作申请;
若是无法提供模板,则需要针对“通讯信息”单独开通一个私信通道,该通道能且只能发送聊天消息;
特别说明:该通道申请后,OPPO PUSH将会定期核查,若应用于该通道发送“通讯信息”以外的消息,将永久禁用单独聊天消息功能;

step1:填写《无模板私信通道申请表》

下载表格文档,并填制通道信息:
开通无模板私信通道申请-APP名称-申请日期.xlsx

step2:发送邮件至push@oppo.com,标题及正文如下,同时附上该通道对应的场景说明、及相关截图或录屏内容附件

邮件标题:无模板私信通道申请——应用名称
邮件正文:
应用ID:XXX
应用名称:XXX
应用包名:XXX
私信专用通道名称:
私信专用通道ID:
业务接口人联系微信:
XX应用申请开通无模板的私信通道,并承诺遵守运营规则,仅在该通道推送“通讯信息”。
对应的场景及相关截图或录屏内容见附件

运营监管及处罚

处罚标准

对于私信通道发送公信信息的情况

OPPO Push将会对私信通道发送信息情况结合提供的私信模板进行监控,若出现利用私信通道发送模板以外的信息量达到一定比例,将视为违规;
第一次违规:邮件警告,并要求7个自然日整改,逾期未收到反馈邮件,按照二次违规处理;
第二次违规:关闭私信权限15个自然日,
第三次违规:关闭私信权限30个自然日;
三次以上属于严重违规,永久禁用私信通道;

*可能触发该违规的场景:
1、开发者仅申请开通了私信通道,没有提交模板;
2、开发者提供的模板与私信通道实际推送的消息内容不一致;
建议开发者合理评估应用推送需求。若公信额度充裕,优先使用公信通道进行消息下发;若申请私信通道权限,请确保私信通道内推送的消息与所提交的模板内容一致。

对于通讯消息通道发送除聊天以外的信息

针对通讯消息,提交无模板私信通道申请。平台将会定期核查通讯消息通道,若应用在该通道发送“通讯信息”以外的消息,将永久禁用单独聊天消息功能;

权益恢复申请

因私信通道未提交模板或发送模板以外信息,被邮件警告或者关闭私信通道的app,可以在整改完成后,填写附件并发送邮件至push@oppo.com申请恢复;
下载表格文档,并填制通道信息:
恢复私信通道申请-APP名称-申请日期.xlsx

邮件标题:恢复私信通道申请——应用名称
邮件正文:
应用ID:XXX
应用名称:XXX
应用包名:XXX
私信专用通道名称:
私信专用通道ID:
业务接口人联系微信:
您好,我司应用XX(应用名称)于XXXX年XX月XX日由于XX被关闭XX私信通道。
当前,我司已进行整改,下线违规消息,整改报告见附件。
同时,我司承诺:不再用私信通道发送公信。
请OPPO推送团队恢复XX(应用名称)的私信通道。 该通道对应的私信消息模板见附件:

FAQ

1、公信通道必须走公信消息,私信通道必须走私信消息吗?

公信通道不限制消息类型;
私信通道必须走私信消息,且确保这些私信消息已经提交了对应的模板,否则会受到到运营监管处罚;

2、私信通道开通后,随着时间推移,各个APP的私信模板由于业务的诉求而变更时,需要重新提交申请么?

需要;
私信模板是判断私信通道push合规使用的重要方式,APP业务私信模板发生变化,若没有及时知会给OPPO PUSH团队,则会使得这部分私信被监控系统判断为公信内容,而收到对应处罚。

3、已经申请过了私信通道,原有的私信通道还有效吗?

原有通道有效,但需要补充私信模板。

4、不申请私信通道会会有什么影响吗?

可以使用公信通道下发消息,公信通道存在每日推送量限制
公信推送量限制请参考《推送服务受限说明

5、创建私信通道需要按私信类型分类吗?

有模板私信通道须与无模板(通讯消息)私信通道区分(通道ID与名称不能为同一个),以免系统识别通讯消息通道下发除聊天以外的消息导致违规。
注意:通道名称和通道ID需与申请表格内提交一致并确保后续消息下发时消息体与对应通道的模板相匹配。

6、模板Excel附件应该怎么填制呢?

1、选择对应的私信类型,私信类型对于不在分类中的场景,私信类型请选择“其他”;
2、标题模板和内容模板中符号“$$”之间的内容是“可变量”,其他的内容是“固定不变的”;为确保模板是对应到某一固定的业务场景,模板内容不能全部为“可变量”,必须包含有具体含义的固定不变内容。

示例:您好,请查收$XXXX$ ;您好,您的设备$XX$检测到$XXX$;

3、对于通讯消息及需要用户主动设置才接收到的提醒(如订阅类通知),需要提供相关设置界面的截图或者录屏材料,以确保申请的场景满足规范要求;

OPPO开放平台消息推送自检工具

OPPO开放平台消息推送自检工具

自检工具

OPush Demo的使用

OPush Demo提供了一些基本功能的接入示例,开发者可以在接入SDK之前,通过demo方快速体验和了解推送的实际效果。也可以测试一些基本功能例如注册、注销、清除通知、打开通知设置等功能。或者通过修改部分代码,可以快速验证接入功能。

代码参考demo下载:heytapPushDemo.rar(3.0.0版本)

OPPO开放平台消息推送错误代码定义

OPPO开放平台消息推送错误代码定义

错误代码定义

错误码定义说明

参考类 com.coloros.mcssdk.mode.ErrorCode 中的错误码定义进行处理,详细如下:

通用错误码

Code英文描述中文描述
-5ERROR_REGISTERID_CHECK_ERROR监测registerId有误
-4ERROR_APPPACKAGE_EMPTY应用包名为空
-3ERROR_DEVICEID_NULL设备id为空
-2ERROR初始值
-1SERVICE_CURRENTLY_UNAVAILABLE服务不可用,请开发者稍候再试
0SUCCESS成功,只表明接口调用成功

应用注册接口错误码

Code英文描述中文描述
11Insufficient ISV Permissions无此API调用权限,开发者权限不足
12Http Action Not AllowedHTTP 方法不正确
13App Call Limited应用调用次数超限,包含调用频率超限
14Invalid App Key无效的AppKey参数
15Missing App Key缺少AppKey参数
16Invalid Signature sign校验不通过,无效签名
17Missing Signature缺少签名参数
18Missing Timestamp缺少时间戳参数
19Invalid Timestamp非法的时间戳参数
20Invalid Method不存在的方法名
21Missing Method缺少方法名参数
22Missing Version缺少版本参数
23Invalid Version非法的版本参数,用户传入的版本号格式错误,必需为数字格式
24Unsupported Version不支持的版本号,用户传入的版本号没有被提供
25Invalid encoding编码错误,一般是用户做http请求的时候没有用UTF-8编码请求造成
26IP Black ListIP黑名单
40Missing Required Arguments缺少必选参数 ,API文档中设置为必选的参数是必传的,请仔细核对文档
41Invalid Arguments参数错误,一般是用户传入参数非法引起的,请仔细检查入参格式、范围是否一一对应
42ERROR_MCS_NOT_PREPAREDMCS没有完成初始化

onError错误码

Code英文描述中文描述
-1ERROR_CODE_REGISTER_API_FREQUENTLY注册频繁调用
-2ERROR_CODE_UNREGISTER_API_FREQUENTLY注销频繁调用
-3ERROR_CODE_PAUSE_API_FREQUENTLY停止推送频繁调用
-4ERROR_CODE_RESUME_PUSH_API_FREQUENTLY恢复推送频繁调用
-5ERROR_CODE_GET_NOTIFICATION_STATUS_API_FREQUENTLY获取通知栏状态频繁调用
-6ERROR_CODE_SET_NOTIFICATION_TYPE_API_FREQUENTLY设置通知栏tyye频繁调用
-7ERROR_CODE_CLEAR_NOTIFICATION_TYPE_API_FREQUENTLY清除通知栏type频繁调用
-8ERROR_CODE_OPEN_NOTIFICATION_SETTINGS_API_FREQUENTLY打开通知栏设置界面频繁调用
-9ERROR_CODE_CLEAR_NOTIFICATIONS_API_FREQUENTLY清除通知栏消息频繁调用
-10ERROR_CODE_GET_PUSH_STATUS_API_FREQUENTLY获取push状态频繁调用
-11ERROR_CODE_SET_PUSH_TIME_API_FREQUENTLY设置push时间频繁调用
-12ERROR_CODE_REQUEST_NOTIFICATION_PERMISSION_API_FREQUENTLY请求通知栏权限频繁调用
-13ERROR_CODE_SEND_INSTANT_ACK_API_FREQUENTLY发送ack频繁调用
-14ERROR_CODE_STATISTIC_FREQUENTLY埋点上报频繁调用
-15ERROR_CODE_ENABLE_APP_NOTIFICATION_FREQUENTLY关闭应用通知栏频繁调用
-16ERROR_CODE_DISABLE_APP_NOTIFICATION_FREQUENTLY开启应用通知栏频繁调用
-17ERROR_CODE_GET_APP_NOTIFICATION_FREQUENTLY获取应用通知栏状态频繁

OPPO消息推送 样式配置教程

OPPO消息推送 样式配置教程

样式配置

支持Web平台及API两种推送方式,Web平台推送请参考 推送运营平台指南 > 创建推送,API推送请参考服务端指南>通知栏消息
推送内容展示样式有短文本、长文本、大图三种展示样式

短文本

消息内容最大文本最大字数为50。
通知栏第一条可展示全部内容,非第一条只展示一行内容,超过一行的内容不会显示。

长文本

ColorOS版本大于5.0可用,消息内容文本最大字数为120。
通知栏第一条消息可展示全部内容,非第一条只展示一行内容。

大图

ColorOS版本大于5.0可用。
在连接WIFI状态下通知栏第一条消息可显示大图,非通知栏第一条消息或非WIFI状态下消息不显示大图。