OPPO推送消息能力Android SDK集成
目前SDK版本为V3.1.0,仅支持ColorOS 3.1或以上版本的手机系统,如无特殊说明,兼容历史版本。
具体权限申请流程可参考【推送服务开启指南 】
申请通过后,可在OPPO推送平台-配置管理-应用配置-页面查看AppKey、AppSecret和MasterSecret(仅开发者帐号(主帐号)可查看)。
名词解释:AppKey、AppSecret客户端的身份标识,客户端SDK初始化时使用。
Android的SDK以aar形式提供,第三方APP只需要添加少量代码即可接入OPPO推送服务。 代码参考demo下载:heytapPushDemo 下载aar文件,即3.1.0版本sdk:com.heytap.msp_3.1.0.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'
}
}
....
}
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.** { *;}
/**
*初始化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方法中调用该接口以避免和其他弹窗重叠。重复调用该接口,弹窗也仅会显示一次。
//注册的结果,如果注册成功,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发送。
//设置应用内通知开关结果,如果成功返回0,失败返回非0,具体指参考错误码 void onSetAppNotificationSwitch(int responseCode);
建议复用使用一个callBackService,避免后面对象覆盖调前面一个对象导致前面的callBackService无返回。
//获取应用内通知开关结果,如果成功返回0,失败返回非0,具体指参考错误码
//appSwich:0:未定义状态(不校验开关),1:打开状态,2:关闭状态
void onGetAppNotificationSwitch(int responseCode, int appSwitch);
建议复用使用一个callBackService,避免后面对象覆盖调前面一个对象导致前面的callBackService无返回。
1)性能指标:响应时间小于500毫秒 2)sdk包大小:500kb以内