OPPO消息推送高级能力配置

OPPO消息推送高级能力配置

客户端高级能力配置

推送弹窗开关

在第一次启动APP时会弹窗询问用户是否开启通知栏权限,如果用户选择允许,则直接开启,不需要跳转到系统设置页让用户手动开启,简单高效能大幅提升通知栏权限开启的成功率。
用户一旦作出选择,整个APP生命周期内不会再次触发。
仅限Color OS 12.1以下。

/**
 * 弹出通知栏权限弹窗(仅一次)
 */
27)void requestNotificationPermission ();

服务端高级能力

具体使用可参考【服务端指南/通知栏消息

推送方式

推送服务支持标签、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可能失效的情况。

定时推送

可以根据业务需求自定义消息推送时间,可以选择立即推送或指定时间推送。定时展示功能设置成功后消息即时下发,到达用户手机后并不直接展示出来,到了设置的定时展示时间,消息才展示出来。

A/B测试推送

A/B测试推送:为满足业务方对推送文案进行优选测试, 推送消息推送提供A/B测试推送功能,支持把不同的文案推送给具有相同特征的人群,运营人员可比较文案点击率,选出最优文案发送给目标用户。

自定义消息有效期

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

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

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

OPPO推送消息能力Android SDK集成

OPPO推送消息能力Android SDK集成

版本说明

目前SDK版本为V3.1.0,仅支持ColorOS 3.1或以上版本的手机系统,如无特殊说明,兼容历史版本。

SDK接入流程

开通推送权限

具体权限申请流程可参考【推送服务开启指南

获取秘钥等验证信息

申请通过后,可在OPPO推送平台-配置管理-应用配置-页面查看AppKey、AppSecret和MasterSecret(仅开发者帐号(主帐号)可查看)。

名词解释:AppKey、AppSecret客户端的身份标识,客户端SDK初始化时使用。

SDK集成步骤

注册并下载SDK

Android的SDK以aar形式提供,第三方APP只需要添加少量代码即可接入OPPO推送服务。
代码参考demo下载:heytapPushDemo
下载aar文件,即3.1.0版本sdk:com.heytap.msp_3.1.0.aar

aar依赖

第一步:添加maven仓库

repositories {
    google()
    mavenCentral()
}

第二步:添加maven依赖

implementation(name: 'com.heytap.msp_3.1.0', ext: 'aar')
//以下依赖都需要添加
implementation 'com.google.code.gson:gson:2.6.2'
implementation 'commons-codec:commons-codec:1.6'
implementation 'com.android.support:support-annotations:28.0.0'(SDK中的接入最小依赖项,也可以参考demo中的依赖)

第三步:添加aar配置
在build文件中添加以下代码

Android{
....

repositories {
    flatDir {
        dirs 'libs'
    }
}

....
}

配置AndroidManifest.xml

1)OPPO推送服务SDK支持的最低安卓版本为Android 4.4系统。
<uses-sdk  android:minSdkVersion="19"/>
 
2)推送服务组件注册
//必须配置
<service
   android:name="com.heytap.msp.push.service.XXXService"    
  android:permission="com.heytap.mcs.permission.SEND_PUSH_MESSAGE"
 android:exported="true">
    <intent-filter>
     <action android:name="com.heytap.mcs.action.RECEIVE_MCS_MESSAGE"/> 
<action android:name="com.heytap.msp.push.RECEIVE_MCS_MESSAGE"/>
    </intent-filter>
</service>(兼容Q版本,继承DataMessageCallbackService)
 
<service
   android:name="com.heytap.msp.push.service.XXXService"     
android:permission="com.coloros.mcs.permission.SEND_MCS_MESSAGE"
android:exported="true">
    <intent-filter>
     <action android:name="com.coloros.mcs.action.RECEIVE_MCS_MESSAGE"/>
    </intent-filter>
</service>(兼容Q以下版本,继承CompatibleDataMessageCallbackService)

注册推送服务

1)应用推荐在Application类主进程中调用HeytapPushManager.init(…)接口,这个方法不是耗时操作,执行之后才能使用推送服务
2)业务需要调用api接口,例如应用内开关开启/关闭,需要调用注册接口之后,才会生效
3)由于不是所有平台都支持MSP PUSH,提供接口HeytapPushManager.isSupportPush()方便应用判断是否支持,支持才能执行后续操作
4)通过调用HeytapPushManager.register(…)进行应用注册,注册成功后,您可以在ICallBackResultService的onRegister回调方法中得到regId,您可以将regId上传到自己的服务器,方便向其发消息。初始化相关参数具体要求参考详细API说明中的初始化部分。
5)为了提高push的注册率,你可以在Application的onCreate中初始化push。你也可以根据需要,在其他地方初始化push。如果第一次注册失败,第二次可以直接调用PushManager.getInstance().getRegister()进行重试,此方法默认会使用第一次传入的参数掉调用注册。

混淆配置

-keep public class * extends android.app.Service
-keep class com.heytap.msp.** { *;}

详细API说明

HeytapPushManager

接口定义

      /**
     *初始化MSP服务,创建默认通道
     *@param context必须传入当前app的context
     *@param needLog是否需要设置log
     */
        1)void init (Context context,bool needLog)
    /**
     *获取Mcs的包名
     */
        2)string getMcsPackageName ()

    /**
     *获取接收消息服务的action
     */
        3)string getReceiveSdkAction ()

    /**
     *判断是否手机平台是否支持PUSH
     @param context传入应用上下文
     *@return true 表示手机平台支持PUSH, false表示不支持
     */
        4)boolean isSupportPush (Context context)
    /**
     * (旧埋点)消息事件统计接口,用于进行额外的Push消息事件统计   *
     * @param context 应用的context
     * @param message 需要上报的消息或消息列表
     */
    //会在以后的版本逐渐废弃
        5)void statisticMessage (Context context, MessageStat message)
        6)void statisticMessage (Context context, List < MessageStat > messages)

    /**
     * (新埋点)消息事件统计接口,用于进行额外的Push消息事件统计,如有需要使用,请开发者提前与OppoPush团队进行充分沟通和确认,为了防止业务方频繁调用上报
     *
     * @param context 应用的context
     * @param eventId 需要上报的eventId事件,上报的eventId在EventConstant类中
     *
        7)void statisticEvent(Context context,String eventId , DataMessage message)

    /**
     *获取registerId
     */
        8)String getRegisterID ()

    /**
     *设置registerId
     */
        9)void setRegisterID (String mRegisterID)

    /**
     * 注册MSP推送服务
     * @param applicatoinContext必须传入当前app的applicationcontet
     * @param appKey 在开发者网站上注册时生成的,与AppKey相对应
     * @param appSecret 与AppSecret相对应
     * @param ICallBackResultService SDK操作的回调
     */
        10)void register (Context applicatoinContext, String appKey, String appSecret, ICallBackResultService
            ICallBackResultService );

    /**
     * 设置appKey等参数,可以覆盖register中的appkey设置
     * @param appKey 在开发者网站上注册时生成的key
     * @param appSecret
     */
        11)void setAppKeySecret (String appKey, String appSecret);

    /**
     *获取pushcall回调
     */
        12)ICallBackResultService getPushCallback ()

    /**
     * 设置sdk操作回调处理,可以覆盖register中的ICallBackResultService设置
     * @param ICallBackResultService sdk操作回调处理
     */
        13)void setPushCallback (ICallBackResultService ICallBackResultService );


    /**
     * 解注册MSP推送服务
     */
        14)void unRegister ();

    /**
     * 获取注册OPush推送服务的注册ID,此方法用于提高注册率,里面调用的是注册的逻辑,引用之前传入的参数
     */
        15)void getRegister ()

    /**
     * 暂停接收MSP服务推送的消息
     */
        16)void pausePush ();

    /**
     * 恢复接收MSP服务推送的消息,这时服务器会把暂停时期的推送消息重新推送过来
     */
        17)void resumePush ();

    /**
     * 清除通知
     */
        18)void clearNotifications ()

    /**
     * 获取MSP推送服务状态
     */
       19)void getPushStatus ();

    /**
     * 获取MSP推送服务SDK版本(例如”2.1.0”)
     *
     * @return SDKVersion
     */
       20)String getSDKVersionCode ();

    /**
     * 获取MSP推送服务SDK名称
     *
     * @return SDKVersionName
     */
        21)String getSDKVersionName ();

    /**
     * 获取MSP推送服务MCS版本(例如“2400”)
     *
     * @return PushVersionCode
     */
        22)String getPushVersionCode ();

    /**
     * 获取MSP推送服务MCS版本(例如“2.4.0”)
     *
     * @return PushVersionName
     */
        23)String getPushVersionName ();

    /**
     * 设置允许推送时间 API
     *
     * @param weekDays 周日为0,周一为1,以此类推
     * @param startHour 开始时间,24小时制
     * @param endHour 结束时间,24小时制
     */
        24)void setPushTime (List< Integer > weekDays, int startHour, int start Min, int endHour, int endMin);

    /**
     * 弹出通知栏权限弹窗(仅一次),OS12.1及之后的ColorOS版本废弃该接口,不生效
     */
        25)void requestNotificationPermission ();

    /**
     * 打开通知栏设置界面
     */
        26)void openNotificationSetting ();

    /**
     * 获取通知栏状态,从callbackresultservice回调结果
     */
        27)void getNotificationStatus ();

    /**
     * 打开应用内通知
     *@see ISetAppNotificationCallBackService
     */
        28)void enableAppNotificationSwitch (ISetAppNotificationCallBackService callBackService);

    /**
     * 关闭应用内通知
     *@see ISetAppNotificationCallBackService
     */
        29)void disableAppNotificationSwitch (ISetAppNotificationCallBackService callBackService);

    /**
     * 获取应用内通知开关
     *@see IGetAppNotificationCallBackService
     */
        30)void getAppNotificationSwitch (IGetAppNotificationCallBackService callBackService);

接口说明

应用在没有获取到registerId时,需要先调用register进行注册,注册成功后才可以进行后续操作。如果调用register注册失败,可以调用getRegister使用上一次传入的参数进行重试。
调用requestNotificationPermission显示通知权限弹窗,用户可通过弹窗自行选择是/否打开应用的通知权限。建议在Activity的onResume方法中调用该接口以避免和其他弹窗重叠。重复调用该接口,弹窗也仅会显示一次。

ICallBackResultService

接口定义

//注册的结果,如果注册成功,registerID就是客户端的唯一身份标识
void onRegister(int responseCode, String registerID);

//反注册的结果
void onUnRegister(int responseCode);
 
//获取当前的push状态返回,根据返回码判断当前的push状态,返回码具体含义可以参考[错误码]
void onGetPushStatus(int responseCode,int status);
public class PushStatus {
    public static final int PUSH_STATUS_START = 0;
    public static final int PUSH_STATUS_PAUSE = 1;
    public static final int PUSH_STATUS_STOP = 2;
}
 
//获取当前通知栏状态,返回码具体含义可以参考[错误码]
void onGetNotificationStatus(int responseCode,int status);
public class NotificatoinStatus {
    public static final int STATUS_OPEN = 0;
    public static final int STATUS_CLOSE = 1;
}
 
//获取设置推送时间的执行结果
void onSetPushTime(int responseCode, String pushTime)
 
//错误码返回的接口(当前主要是用于调用频繁的回调,后续可做拓展)
void onError(int code, String msg)

接口说明

所有回调都需要根据responseCode来判断操作是否成功,0 代表成功,其他代码失败,失败具体原因可以查阅附录中的错误码列表。
onRegister接口返回的registerID是当前客户端的唯一标识,app开发者可以上传保存到应用服务器中,在发送push消息是可以指定registerID发送。

ISetAppNotificationCallBackService

接口定义

//设置应用内通知开关结果,如果成功返回0,失败返回非0,具体指参考错误码
void onSetAppNotificationSwitch(int responseCode);

接口说明

建议复用使用一个callBackService,避免后面对象覆盖调前面一个对象导致前面的callBackService无返回。

IGetAppNotificationCallBackService

接口定义

//获取应用内通知开关结果,如果成功返回0,失败返回非0,具体指参考错误码
//appSwich:0:未定义状态(不校验开关),1:打开状态,2:关闭状态
void onGetAppNotificationSwitch(int responseCode, int appSwitch);

接口说明

建议复用使用一个callBackService,避免后面对象覆盖调前面一个对象导致前面的callBackService无返回。

性能指标和SDK包大小

1)性能指标:响应时间小于500毫秒
2)sdk包大小:500kb以内

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开放平台,注册成为OPPO企业开发者,详情请参考《OPPO企业开发者帐号注册流程》

创建应用

登录OPPO企业开发者帐号,并创建应用,详情请参考《应用接入流程》

开通PUSH服务

1、登录OPPO开放平台,依次选择“产品”–“移动服务”–“推送服务”

2、进入产品介绍页,点击“立即使用”

3、进入推送运营平台,为未开启服务的应用申请推送服务权限


1)已开启服务:已申请PUSH权限并通过的应用
2)未开启服务:可申请PUSH权限的应用

4、点击“申请开通按钮”
在未开启服务中点击需要申请PUSH权限的应用,进入PUSH服务并点击申请开通。

1)通知栏推送:应用需在OPPO软件商店上架。
2)通知栏推送测试权限:每天仅可推送1000条消息,限测试使用。应用上架后需重新申请“通知栏推送”权限,以获得正常消息推送数量。

5、提交申请。

6、等待审核结果

平台将会在1个工作日内返回审核结果,开发者可以在申请页面查看审核结果,其他问题可咨询开放平台客服。

oppo推送受限说明

oppo推送受限说明

送达率说明

推送服务致力于提供安全可靠的消息发送通道,保障消息成功送达。此外,以下非通道因素也直接影响消息的送达情况,主要影响因素有:
1)终端设备是否在线
如果设备离线,PUSH平台会缓存消息,待用户上线后,再次将消息投递给用户。PUSH平台只缓存一次用户的消息,如果用户在线后还发不通,PUSH平台不再缓存。
2)用户手机上集成PUSH SDK的应用是否被卸载
3)网络状况是否稳定
4)终端手机的安全控制策略

支持的终端设备

目前支持 ColorOS3.1及以上的系统的OPPO的机型,一加5/5t及以上机型,realme所有机型。

推送消息的及时性

OPPO PUSH尽可能保障消息及时送达,设备网络条件良好且不拥堵情况下时延在1s内,该时延时间仅指PUSH通道推送消息的时延。开发者在运营管理网站的控制台创建基于RegID的推送任务和通过API创建的基于标签等的推送任务,PUSH系统将先进行推送任务的调度,再通过PUSH通道推送消息。

推送消息大小要求

PUSH消息支持的Android App包名称最大为128个字节,消息内容最大支持为4K字节。

支持的地区

除中国以外,还支持印度、印尼、泰国、越南、菲律宾、马来西亚。(海外应用请进入海外开放平台申请

推送数量限制规则

/累计用户数可推送总数量(条/日)
公信可推送数<50000100000
≥50000累计用户数*2
私信可推送数不限量
测试推送数1000(仅供接入测试使用)

1)目前私信处于公测阶段,需要申请才能开启私信通道,私信申请请参考【推送私信通道申请】
2)累计用户数是指从接入推送服务的app客户端,用户安装并激活的累计用户量,去除已卸载用户数;
3)累计用户数在OPPO推送运营平台可查询,每天会刷新。

接收数量限制

通过OPPO推送平台下发的消息(包含公私信),单用户接收上限2000条/日。

QPS限制规则说明

限制规则

OPPO推送对QPS的分配主要依据应用的累计用户数,应用类别权重和平台推送系数三个值进行加权计算,其中累计用户数在OPUSH平台上的查询路径是OPPO PUSH推送运营平台—我要推送消息—应用列表中的累计用户数。

计算公式

应用QPS = 推送QPS参考值 * 应用类别权重 * 平台推送系数
例如:针对应用维度,30000 QPS表示1秒内本应用最多可推送给30000个用户(所有接口共享应用维度限速上限总值)。

QPS超限时会返回什么错误吗?

QPS超限时会返回错误码 55, 原因:APP Call Frequency Limit

返回错误如何处理

请降低您的并发请求数,确保每秒的请求数不高于QPS限制,业务应当设置规则优先发送重要的消息,非热点或时效性要求低消息需按照规定qps以下进行推送。
具体的QPS对应值如下:

序号累计用户数推送QPS参考值应用类别权重平台推送系数(默认 = 1)
1≥10000万3000011
2≥5000万且<10000万2000011
3≥1000万且<5000万1000011
4<1000万500011

备注:QPS(Quantity per second)表示1秒可调用OPPO PUSH的请求数。

RegistartationId是什么?

RegistartationId是什么?

也叫注册ID,PUSH共有概念,用以唯一标识一个APP的设备,即: APP+DeviceId=RegistartationId。开放给开发者,开发者下发推送的时候,需要指定目标,目标即为RegistartationId。RegistartationId在用户第一次打开应用的时候生成,后续可能会发生变化(卸载重装)。

DeviceId是什么?

Push自有私有概念,由于IMEI可能不唯一,当客户端与服务端建立连接的时候,会注册一个DeviceId,用于唯一标示一台手机设备。最新的客户端版本(新手机)的长连接将以DeviceId建立。

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。

帐号管理功能

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

数据统计功能

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

OPPO推送产品说明

OPPO推送产品说明

产品说明

推送服务(OPPO PUSH)是OPPO公司向开发者提供的消息推送服务,通过服务端与OS端建立的一条稳定、可靠的长连接通道,向OPPO手机系统(ColorOS)上的APP应用客户端实时推送消息的服务。无论应用进程是否存在,均可正常收到消息。
目前OPPO PUSH覆盖广泛,已累计覆盖5亿+的OS活跃设备。

业务逻辑图

产品优势

系统级通道

共享ColorOS系统级长连接,充分保障通知栏消息在Color OS设备上的送达率,不管应用是否在后台存活,通过OPPO PUSH都可以保证消息到达。在设备联网的情况下,有效送达率可达99.99%以上。

安全高效、便捷易用

提供每秒百万级消息推送速率,稳定性强,安全性高;提供Web平台与API两种推送方式,可快速集成SDK,有效提高留存率。

全面的数据统计

OPPO 推送运营平台提供不同维度的推送数据报表,主要包括单条消息推送数据与应用实时推送数据等,助力于开发者制定后续的push投放策略。

消息样式多样化

支持长文字、大图等富文本通知栏消息样式,满足开发者个性化推送需求。

oppo开放平台 安全评估报告合规指引

oppo开放平台 安全评估报告合规指引

背景

依照《具有舆论属性或社会动员能力的互联网信息服务安全评估规定》和《互联网新闻信息服务新技术新应用安全评估管理规定》,具有舆论属性或社会动员能力的互联网信息服务提供者,应当针对信息服务和新技术新应用的合法性、落实安全措施和防控安全风险的有效性等情况,自行或委托第三方开展安全评估。经过安全评估,符合法律、行政法规、部门规章和标准的,应当形成安全评估报告,并通过全国互联网安全管理服务平台提交至网信部门和公安机关。

如何申请“安全评估报告”

登录全国互联网安全服务管理平台,点击“安全评估报告”进行申请。

应用上架时,如何补充提交“安全评估报告”

管理中心→应用服务→应用列表→点击对应APP图标→资料更新→版权证明资料

注意事项

1、除上传安全评估报告副本外,还需提供安全评估报告在全国互联网安全管理服务管理平台的提交结果截图。

2、安全评估报告上的服务名称需与上传的应用名称保持一致,单位名称需与开发者所属名称一致。

3、安全评估报告尾页需申请主体单位及评估单位签字、盖章,并填写日期。

安全评估报告示例:

4、根据规定,互联网信息服务提供者应当依照规定自行开展安全评估,对自身信息服务和新技术新应用的合法性,落实法律、行政法规、部门规章和标准规定的安全措施的有效性,防控安全风险的有效性等情况进行全面评估,对评估结果负责,并及时整改安全隐患。不可以授权给他人进行使用。

相关政策文档

1、具有舆论属性或社会动员能力的互联网信息服务安全评估规定
2、国家互联网信息办公室、公安部加强对语音社交软件和涉深度伪造技术的互联网新技术新应用安全评估

OPPO开放平台 APP常见个人信息保护问题合规指引

OPPO开放平台 APP常见个人信息保护问题合规指引

为帮助APP开发者更好地履行个人信息保护的责任与义务,OPPO软件商店面向开发者整理出以下APP常见个人信息保护问题和改进建议,望携手开发者一起为用户建设健康、安全、可靠的应用生态环境。

一、违规收集个人信息

重点关注APP、SDK未告知用户收集个人信息的目的、方式、范围且未经用户同意,私自收集用户个人信息的行为。

1、合规指引

-APP未以个人信息处理规则弹窗等形式向用户明示个人信息处理的目的、方式和范围,不应收集个人信息。
-APP以个人信息处理规则弹窗等形式向用户明示个人信息处理的目的、方式和范围,未经用户同意,不应收集个人信息。
-APP以个人信息处理规则弹窗等形式向用户明示个人信息处理的目的、方式和范围,未清晰明示处理个人信息的目的、方式和范围,用户同意后,不应收集相应个人信息;未清晰明示在静默状态下或在后台运行时收集个人信息的目的、方式和范围,不应收集相应个人信息。
-APP未以个人信息处理规则弹窗等形式向用户明示第三方SDK处理个人信息的目的、方式和范围,第三方SDK不应收集个人信息。
-APP以个人信息处理规则弹窗等形式向用户明示第三方SDK处理个人信息的目的、方式和范围,未经用户同意,第三方SDK不应收集个人信息。
-APP以个人信息处理规则弹窗等形式向用户明示第三方SDK处理个人信息的目的、方式和范围,未清晰明示第三方SDK处理个人信息的目的、方式和范围,用户同意后,第三方SDK不应收集相应个人信息;未清晰明示在静默状态下或在后台运行时第三方SDK收集个人信息的目的、方式和范围,第三方SDK不应收集相应个人信息。
-APP在征求用户同意环节,应提供明确的同意和拒绝选项。
-APP在征求用户同意环节,不应设置为默认同意。

2、问题案例

情形一: APP首次启动时,未有以弹窗形式明示个人信息保护政策。
改进建议: APP首次启动时,以弹窗等形式向用户明示个人信息保护政策。

情形二: 个人信息保护政策未有说明个人信息处理的目的、方式和范围,如个人信息保护政策为公司官网等与个人信息保护无关的内容。
改进建议: 个人信息保护政策须说明个人信息处理的目的、方式和范围,个人信息保护政策模板可参考GB/T 35273-2020《信息安全技术 个人信息安全规范》附录D。

情形三: 在用户阅读个人信息保护政策前,存在收集个人信息的行为。
改进建议: 建议修改相关代码,停止在用户阅读个人信息保护政策前收集个人信息(个人信息包括不限于IMEI、IMSI、设备MAC地址、软件安装列表、位置、联系人、通话记录、日历、短信、本机电话号码、图片、音视频等)。

二、违规使用个人信息

重点关注APP、SDK未向用户告知且未经用户同意,私自使用个人信息,将用户个人信息用于其提供服务之外的目的,特别是私自向其他应用或服务器发送、共享用户个人信息的行为。

1、合规指引

-APP未向用户明示个人信息处理的目的、方式和范围,不应将个人信息发送给第三方SDK等产品或服务。
-APP以个人信息处理规则弹窗等形式向用户明示共享给第三方的行为,未经用户同意,不应将个人信息发送给第三方SDK等产品或服务。
-APP以个人信息处理规则弹窗等形式向用户明示个人信息处理的目的、方式和范围,未清晰明示共享的第三方身份、目的及个人信息类型,用户同意后,不应将个人信息发送给第三方SDK等产品或服务。
-APP未向用户告知且未经用户同意,不应将设备识别信息、商品浏览记录、搜索使用习惯、软件安装列表等个人信息传输至APP服务器后,向第三方产品或服务提供其收集的个人信息。

2、问题案例

情形一: App未见向用户明示分享的第三方名称、目的及个人信息类型,用户同意个人信息保护政策后,存在将个人信息发送给第三方SDK的行为。
改进建议: 建议修改APP个人信息保护政策,APP须在个人信息保护政策等公示文本中逐一列明App所集成第三方SDK收集使用个人信息的目的、方式和范围,并征得用户同意;建议修改相关代码,在用户同意前,停止将个人信息发送给第三方SDK。

三、强制用户使用定向推送功能

重点关注APP、SDK未以显著方式标示且未经用户同意,将收集到的用户搜索、浏览记录、使用习惯等个人信息,用于定向推送或广告精准营销,且未提供关闭该功能选项的行为。

1、合规指引

-若APP的业务功能存在定向推送功能,应以个人信息处理规则弹窗等形式向用户明示,将收集的用户个人信息用于定向推送、精准营销。
-若APP定向推送功能使用了第三方的个人信息来源,应以个人信息处理规则弹窗等形式向用户明示业务功能使用第三方的个人信息进行定向推送,并向用户明示第三方的个人信息来源。
-APP以个人信息处理规则弹窗等形式明示存在定向推送功能,页面中应显著区分定向推送服务,显著方式包括但不限于:标明“个性化推荐”、“定推”、“猜你喜欢”等其他能显著区分的字样,或通过不同的栏目、版块、页面分别展示等。
-APP以个人信息处理规则弹窗等形式明示存在定向推送功能,应提供便捷有效的退出或关闭个性化展示模式的选项,如拒绝接受定向推送信息,或停止、退出、关闭相应功能的机制。

2、问题案例

情形一: APP个人信息保护政策中存在“向您提供更加个性的内容”等内容,明示存在定向推送功能,但未见提供退出或关闭个性化展示模式的选项。
改进建议: 若APP存在定向推送功能,应提供应提供便捷有效的退出或关闭个性化展示模式的选项,如拒绝接受定向推送信息,或停止、退出、关闭相应功能的机制。

四、APP强制、频繁、过度索取权限

重点关注APP安装、运行和使用相关功能时,非服务所必需或无合理应用场景下,用户拒绝相关授权申请后,应用自动退出或关闭的行为;短时长、高频次,在用户明确拒绝权限申请后,频繁弹窗、反复申请与当前服务场景无关权限的行为;未及时明确告知用户索取权限的目的和用途,提前申请超出其业务功能等权限的行为。

1、合规指引

-APP 运行时,向用户索取电话、通讯录、定位、短信、录音、相机、存储、日历等权限,用户拒绝授权后,APP 不应退出或关闭,不应拒绝注册或登录,或拒绝提供与申请权限无关的功能服务。
-APP 运行时,向用户索取电话、通讯录、定位、短信、录音、相机、存储、日历等权限,用户拒绝授权后,APP 不应循环弹窗申请权限,使用户无法继续使用。
-APP 未提供相关业务功能或服务,不应申请通讯录、定位、短信、录音、相机、日历、电话、存储等权限。
-APP 首次打开或运行中,未见使用权限对应的相关功能或服务时,不应提前向用户弹窗申请开启通讯录、定位、短信、录音、相机、日历、电话、存储等权限。
-APP不应频繁申请权限,具体场景包括但不限于以下方式:APP运行时,在用户明确拒绝通讯录、定位、短信、录音、相机、日历、电话、存储、通知等权限申请后,不应向用户频繁弹窗申请与当前服务场景无关的权限,影响用户正常使用。APP在用户明确拒绝通讯录、定位、短信、录音、相机、日历、电话、存储、通知等权限申请后,重新运行时,APP不应向用户频繁弹窗申请开启与当前服务场景无关的权限,影响用户正常使用。

2、问题案例

情形一: APP首次启动或用户使用期间,向用户索取权限,用户拒绝授权后,APP强制退出、关闭、白屏、或者循环弹窗,使用户无法继续使用。
改进建议: APP运行时,向用户索取电话、通讯录、定位、短信、录音、相机、存储、日历等权限,用户拒绝授权后,APP应至少保证正常浏览,而不应退出、关闭、白屏、或者循环弹窗,影响用户正常使用。

情形二: 用户注册登录时,向用户索取权限,用户拒绝授权后,无法注册或登录。
改进建议: 用户注册登录时,向用户索取电话、通讯录、定位、短信、录音、相机、存储、日历等权限,用户拒绝授权后,APP应依然提供注册或登录服务。

情形三: APP首次启动或用户使用期间,在用户明确拒绝权限申请后,用户仅浏览或前后台切换等未有主动触发权限所涉及的业务场景,再次弹窗申请权限。
改进建议: APP运行时,在用户明确拒绝通讯录、定位、短信、录音、相机、日历、电话、存储、通知等权限申请后,应不再向用户频繁弹窗申请与当前服务场景无关的权限,并保证用户正常使用。

情形四: 在用户明确拒绝权限申请后,退出APP后再重新启动后,立刻弹窗申请权限。
改进建议: 在用户明确拒绝通讯录、定位、短信、录音、相机、日历、电话、存储、通知等权限申请后,重新运行时,非用户主动触发权限所涉及的业务场景,应不再向用户弹窗申请与当前服务场景无关的权限,并保证用户正常使用APP。

注:
1)个人信息包含但不限于:IMEI、IMSI、设备MAC地址、软件安装列表、位置、联系人、通话记录、日历、短信、本机电话号码、图片、音视频,具体请参阅GB/T 35273-2020《信息安全技术 个人信息安全规范》

2)个人信息保护政策(又称隐私政策)模板,具体请参阅GB/T 35273-2020《信息安全技术 个人信息安全规范》附录D

3)GB/T 35273-2020《信息安全技术 个人信息安全规范》

4)《App违法违规收集使用个人信息行为认定方法》

5)工业和信息化部关于开展APP侵害用户权益专项整治工作的通知【工信部信管函[2019]337号】

6)工业和信息化部关于开展纵深推进APP侵害用户权益专项整治行动的通知【工信部信管函〔2020〕164号】

7)《APP用户权益保护测评规范》

8)《常见类型移动互联网应用程序必要个人信息范围规定》

9)《中华人民共和国网络安全法》

10)《中华人民共和国个人信息保护法》

手机网络游戏(付费)开发者以及棋牌类 APP上架应用商店要求

手机网络游戏(付费)开发者以及棋牌类 APP上架应用商店要求

1.网络游戏应接入 OPPO SDK。(不能包含其他计费形式)
2.棋牌类游戏应提供《网络文化经营许可证》
3.游戏不得包含“赌场”字样、或者涉及扎金花、梭哈、六合彩类等赌博内容的游戏
4.游戏不得存在以随机抽取等偶然方式,诱导网络游戏用户采取投入法定货币或网络游戏虚拟货币方式获取网络游戏产品和服务的行为
APP上架应用商店要求

游戏上架要求 网络游戏(付费)APP上架应用商店要求,网络游戏(付费)APP上架资质

游戏上架要求 网络游戏(付费)APP上架应用商店要求,网络游戏(付费)APP上架资质

1.《计算机软件著作权证书》或软件登记受理通知书资质证明
2.游戏版号及游戏版号证书
3.若涉及授权,需提供相应的软著授权证明和版号运营单位授权证明
4.承诺函

数字藏品(盲盒开出)APP上架应用商店要求,数字藏品(盲盒开出)APP上架资质

数字藏品(盲盒开出)APP上架应用商店要求,数字藏品(盲盒开出)APP上架资质

合作协议
合作方增值电信业务经营许可证项下A. ICP(B25 信息服务业务),B.EDI(B21 在线数据处理与交易处理业务)
合作方区块链安全评估及备案
合作方网络文化经营许可证
盲盒开发者营业执照
盲盒开发者承诺函
数字藏品(盲盒开出)APP上架资质

数字藏品(首次发售)APP上架应用商店要求,数字藏品(首次发售)APP上架资质

数字藏品(首次发售)APP上架应用商店要求,数字藏品(首次发售)APP上架资质

增值电信业务经营许可证项下A. ICP(B25 信息服务业务),B.EDI(B21 在线数据处理与交易处理业务)
区块链安全评估及备案
网络文化经营许可证
营业执照
承诺函