OPPO推送消息能力Android SDK集成

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

OPPO推送消息能力Android SDK集成

版本说明

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

SDK接入流程

开通推送权限

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

获取秘钥等验证信息

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

客户端SDK页.png

名词解释: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以内

编辑:yimen,如若转载,请注明出处:https://www.yimenapp.com/kb-yimen/11054/

部分内容来自网络投稿,如有侵权联系立删

(0)
上一篇 2022年11月18日 下午2:35
下一篇 2022年11月18日 下午2:39

相关推荐