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提供以下三个请求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推送能力

OPPO通知运营规范 OPPO推送能力

通知说明

通知,指在手机通知栏上展示的消息,通知消息也可展示在锁屏、横幅中。通知主要用于提醒用户,如订阅提醒、活动宣传等。

类别

通知分为OPPO PUSH通知和本地通知。

OPPO PUSH 通知

OPPO PUSH通知指ColorOS向开发者提供的消息推送服务,通过服务端与ColorOS建立的稳定、可靠的长连接通道,无论应用进程是否运行,用户均可正常收到消息。

本地通知

本地通知指安卓原生通知,即当应用在运行时,用户可接收到应用推送的通知。

时间和范围

试运行时间:2021年02月25日-2021年03月24日
正式生效时间:2021年03月25日
运营规范旨在营造一个良好的推送环境,所有在OPPO软件商店上架或对OPPO手机有推送通知行为的应用(含快应用),需遵守本规范。

运营规范

运营规范包含四部分:样式、内容、展示跳转和其它。如应用出现以下行为则视为违规,OPPO公司将视违规影响的严重程度定义违规级别,违规级别分为普通违规和严重违规。

样式

如因使用非标准样式引起投诉,将视为违规。违规事例包含但不限于以下行为:
1.1、通知消息未满足《OPPO通知设计规范》
1.2、应用在未经用户同意情况下使用常驻自定义通知①。
1.3、应用模拟其它应用的通知样式(如模拟其它应用的名称、icon或通知内容),欺骗用户点击。(严重违规)

1.4、除播放器外,单个应用使用多个Group来避免通知折叠。②

1.5、出于商业目的,通知在通知栏强行置顶。

1.6、应用使用非标准通知样式,导致1天内被多个用户投诉。(严重违规)

内容

如通知内容违反法律、法规、社会公序良俗,属于严重违规。严重违规事例包含但不限于以下内容:
2.1、发布反社会、反人类言论;
2.2、发布封建迷信内容(小说等虚构类业务除外);
2.3、宣扬不良、消极颓废的人生观、世界观和价值观的内容;
2.4、侵犯个人隐私,恶意曝光他人身体与疾病、私人住宅、婚姻关系、私人空间、私人活动;
2.5、恶搞灾难事故、特殊人群;
2.6、包括吸毒嫖娼在内的违法犯罪名人相关内容(新闻除外);
2.7、涉及歧视的内容;
2.8、色情内容:包括性行为、性器官、性道具(含药品)、性交易、性场所、性诱惑;
2.9、色情作品:成人电影、情色电影、三级片、色情小说、色情音频等;
2.10、重点表现不健康、不正当、非主流的性关系、婚恋观或婚恋状态;
2.11、色情擦边球,用性相关内容表现别的事物;
2.12、不加处理地展示事故、灾难、恶性事件现场血腥或暴力的场面;(包括新闻报道在内,必须对未获得授权的伤者、逝者进行打码处理。)
2.13、对人造成巨大精神冲击的暴力、血腥、恐怖、惊悚内容;(包括影视作品、图片、小说在内。)
2.14、未成年人裸露;
2.15、教唆青少年儿童犯罪;
2.16、非口语化脏话、谩骂、侮辱性语言;
2.17、模仿系统应用给用户推送系统功能提醒消息; 如:您的手机仅剩5%电量。
2.18、诈骗;
2.19、推送的内容在1天内被多个用户投诉;
2.20、推送新闻信息必须采用规范稿源,禁止PUSH弹窗推送商业网站平台和“自媒体”账号违规采编发布、转载的新闻信息;
2.20、推送采用非规范稿源的新闻信息,或推送商业网站平台和“自媒体”账号违规采编发布、转载的新闻信息;
2.21、渲染炒作舆情热点,断章取义、篡改原意吸引眼球、误导用户;
2.22、推送娱乐八卦、明星绯闻、血腥暴力、奇闻异事、低俗恶俗等有悖社会主义核心价值观内容;
2.23、通过PUSH弹窗渠道放大传播失德艺人、负面争议人物的有关言论;
2.24、未取得互联网新闻信息服务许可的工具类应用,不得PUSH弹窗推送新闻信息。

展示跳转

违规事例包含但不限于以下内容:
3.1、通知内容与标题不相符;
3.2、通知内容和跳转界面不属于同一应用,如点击A应用的通知跳转至B应用;
3.3、推送的消息链接无效,无法调起应用;
3.4、其它在1天内被多个用户投诉的展示跳转异常行为。(严重违规)

其它

出现任何违法违规、损害用户利益、给OPPO公司或其关联公司造成损失的,都视为违规。违规事例包含但不限于以下内容:
4.1、由于非正常使用通知造成大量设备异常,如过量耗电、持续亮屏等现象;(严重违规)
4.2、因错字、漏字等情况,导致内容表达的含义产生严重的误解视为违规。如通知展示用户数大于10万,则属于严重违规;
4.3、被OPPO公司认定为恶意破坏系统规则,如通过非正当手段刷量等;(严重违规)
4.4、在1天内被多个用户投诉的上述未提及行为。(严重违规)

处罚措施

如开发者违反上述条款或存在其它违法、违规行为,OPPO公司将根据影响的严重程度定义违规等级。违规等级分为:普通违规和严重违规。
违规应用需承担如下责任:

普通违规

第1次违规第2次违规第3次违规第4次及以上次数违规
第一阶段7个自然日内需整改完成并全量发布3个自然日内需整改完成并全量发布1个自然日内需整改完成并全量发布视为严重违规
第二阶段第8~14个自然日OPPO PUSH公信消推送量减半,直至整改完成并全量发布第4~6个自然日OPPO PUSH公信消息推送量减半,直至整改完成并全量发布第2个自然日OPPO PUSH公信消息推送量减半,直至整改完成并全量发布
第三阶段超过14个(不含)自然日暂停PUSH推送权限超过6个(不含)自然日暂停PUSH推送权限超过2个(不含)自然日暂停PUSH推送权限

严重违规

违规事件被定级为严重违规后,OPPO公司有权关闭违规应用的OPPO PUSH权限。

备注:
1)累计违规次数按近365天的记录计算;
2)违规整改期结束后,如仍存在违规行为,将视为新一轮违规并执行相应处罚;
3)如处罚涉及暂停OPPO PUSH使用权限,惩罚期结束后需由相关违规方发送《重新开启 OPPO PUSH服务申请》至push@oppo.com申请恢复服务。请务必确保整改完成后再提交申请,OPPO公司收到申请后,将酌情评估是否重新开通OPPO PUSH权限;
4)如因应用的违规行为给OPPO或其关联公司造成损失的, OPPO公司有权对开发者的违规行为采取其它合理措施。

注释

①常驻通知,指无法左右滑动删除及无法自动清理的通知。
②ColorOS 11及ColorOS 11以上系统,单个应用超过一条消息时未折叠为一组;ColorOS 11以下系统,单个应用超过三条(不含)通知时未折叠为一组。

OPPO推送功能介绍

OPPO推送功能介绍

消息类型

推送服务目前只支持通知栏信息,同时提供Web平台及API两种推送方式。

通知栏信息

消息通过推送服务系统通道下发,不需要应用驻留后台。 ColorOS3.1至5.0版本的OPPO手机,用户激活了相关应用后,通知栏权限会默认打开。 ColorOS5.1及以后的版本的手机,通知栏权限由系统统一关闭,需用户手动打开。 通知栏消息展示效果如图所示,展示内容涵盖消息标题、内容、应用图标与时间。

推送方式

推送服务支持标签、RegID、Alias等推送方式。

基于标签的推送

标签(Topic)是具有某些相同属性的用户集合, 在应用初始化时或运行过程中,开发者可结合自己的业务特征,给用户打上不同的标签(Topic)。
在推送消息时,开发者可以结合每条消息的内容和目标用户,选择所对应的标签,完成请求后,OPPO PUSH会对这一标签的用户群进行消息推送,满足精准推送的需求。

基于 RegID的推送

RegID是应用在对应设备的上唯一标识,当开发者需要给一个或多个设备推送消息时,可以使用基于 RegID的推送,将个性化的信息推送给指定设备。这种方式适用于需要为每个用户订制个性化推送的场景。
注意:RegID在用户设备刷机、卸载应用、或设备长时间无连接时会失效

基于 Alias的推送

alias是OPPO推送提供的一种个性化设定, 开发者可以将用户在应用内的帐号或其它用户唯一标识设定为用户设备 RegID 的别名,在推送中可以直接基于别名进行推送。
别名不仅方便开发者将推送与自有的帐号系统进行关联,同时也避免了因需要保存设备 RegID 与自有帐号的对应关系而额外带来的开发和存储成本。
注意:
1)alias与RegID(设备)一一对应,同一个alias不能对应多个RegID,alias对应的RegID以最后一次setalias对应的RegID为准;
2)alias失效的可能原因如下:
主动调用unsetalias;
alias对应的RegID已经失效;
设置alias不成功(调用setalias失败);
3)alias只跟设备相关,所以请使用用户帐号作为alias时,合理判断alias可能失效的情况。

推送辅助

定时展示

开发者可以根据自己的业务需求设置定时展示,定时展示功能设置成功后消息即时下发,到达用户手机后并不直接展示出来,到了设置的定时展示时间,消息才展示出来。

自定义消息有效期

开发者可设置每条消息的有效期,在设置的有效期内,只要设备联网,便会收到消息。消息有效期最长10天,最短1小时。

消息标题和内容支持添加 emoji 表情

消息标题和内容支持插入 emoji 表情以丰富推送内容,吸引用户点击了解推送内容。

AB-Test

支持文案对比测试、余量自动&手动推送,协助开发者判定投放策略,有效提升push的CTR。

帐号管理功能

支持应用下多帐号的角色管理,便于团队协作。

数据统计功能

提供多维度数据统计功能,除单条消息的推送基础数据外(包括推送目标数、有效设备、实际下发、到达数/到达率、展示数/展示率、点击数/点击率等),平台还支持应用数据实时统计与分区域统计。对于推送各环节产生的数据流失,平台已上线数据漏斗功能,协助开发者快速定位推送异常。