使用
初始化
协议版本
早期版本消息推送任务推拉是依赖数据同步组件来完成的,从3.0.2.0版本起,消息推送支持直接使用移动网关来实现任务推拉,可以解除任务推拉对数据同步组件的依赖。不过本次协议调整对新版服务有依赖,考虑到私有化客户不同的服务版本,SDK侧做了兼容,同时保留了两套协议实现,客户在初始化时根据自身服务情况指定协议版本即可。
public class ProtocolType {
/**
* 旧协议,依赖数据同步组件实现任务推拉
*/
public static final int PROTOCOL_TYPE_CONCH = 0;
/**
* 新协议:与数据同步组件解耦,
*/
public static final int PROTOCOL_TYPE_SHARK = 1;
}
- 如果您对接的是公有云版本服务,协议版本需选择PROTOCOL_TYPE_SHARK。
- 如果您对接的是私有化版本服务,默认协议版本是PROTOCOL_TYPE_CONCH,如果需要选择PROTOCOL_TYPE_SHARK,请联系管理员确认服务版本是否支持新协议。
初始化SDK
建议在 application 的 onCreate 时调用 push(消息推送)组件初始化接口,由于 push(消息推送)组件依赖TMF基础库,所以在初始化push前,请先初始化TMF基础库。
接口定义
/**
* push 服务初始化
*
* @param useFCM 指示是否强制使用FCM通道,适用于海外上架场景
* @param tmfPushServiceImpl push事件自定义回调
* @param protocolType 使用的推送协议版本
*/
public static void init(boolean useFCM, TMFPushRcvService tmfPushServiceImpl, int protocolType)
参数说明
参数名称 | 参数类型 | 参数描述 | 必选 |
---|---|---|---|
useFCM | boolean | 指示是否强制使用FCM通道,适用于海外上架场景 | Y |
tmfPushServiceImpl | TMFPushRcvService | 接收 push 消息的服务实现类 | Y |
protocolType | int | 使用的推送协议版本 | Y |
Sample
//TMFBase初始化
TMFBaseConfig config = new TMFBaseConfig.Builder()
.buildNo(BuildConfig.BUILD_NO) // 必须,网关, 热更等模块需要使用
.debug(true)
//...
.build();
TMFBase.init(this, config);
//Push初始化,包括注册厂商sdk和自建通道
PushCenter.init(false, new pushRcvService(), protocolType);
消息推送服务回调接口
TMFPushRcvService 可以接收在消息推送控制台页面配置的附加参数键值对数据,该接口以 json 格式直接返回附加参数数据,供调用者解析使用,同时提供消息到达及通知栏点击回调,同时也用于接收透传消息,以 String 格式返回。
当接入华为小米等厂商推送通道时,该接口将返回注册结果码和失败原因。注册结果回调接口将返回注册推送服务时返回的结果码,可判断通道是否成功注册,注册失败时,可根据失败原因或根据返回的结果码,到对应厂商的开发者平台消息推送网站查询对应错误原因。
接口定义
public class TMFPushRcvService{
/**
* 通知栏消息点击时回调
* 注意:点击跳转事件已由sdk内部处理,本接口用于点击时回调附加参数
* @param jsonExtra 附加参数回调(json格式键值对)
*/
public void onNotificationMsgClicked(String jsonExtra){}
/**
* 通知栏消息到达时回调
* 注意:到达!=展示,可能存在由于无通知栏权限等原因消息到达但没有展示出来
* @param jsonExtra 附加参数回调(json格式键值对)
*/
public void onNotificationMsgArrived(String jsonExtra){}
/**
* 透传消息数据回调
* @param pushMsg 收到的透传消息数据
*/
public void onReceivePushMsg(String pushMsg){}
/**
* 注册结果回调(注册结果码,小米同时返回失败原因)
*/
public void onRegisterResult(long errorCode, String errorReason){}
}
接口说明
方法名称 | 参数 | 接口功能描述 |
---|---|---|
onNotificationMsgClicked | String jsonExtra 附加参数回调(json格式键值对) | 通知栏消息点击时回调,注意:点击跳转事件已由 SDK 内部处理,本接口用于点击时回调附加参数 |
onNotificationMsgArrived | String jsonExtra | 通知栏消息到达时回调,注意:到达!=展示,可能存在由于无通知栏权限等原因消息到达但没有展示出来 |
onReceivePushMsg | String pushMsg | 透传消息数据回调,参数返回透传的消息数据 |
onRegisterResult | long errorCode;String errorReason | 注册厂商推送 SDK 的结果码和失败原因,用于定位厂商 SDK 注册过程中的问题(失败原因仅小米有返回) |
Sample
/**
* 继承消息接收类,接收push信息
*/
public class PushRcvService extends TMFPushRcvService {
public static final String TAG = "TMF_PUSH";
@Override
public void onRegisterResult(long errorCode,String errorReason) {
//根据返回的错误码到对应厂商平台查阅错误码对应问题
Log.i(TAG,"onRegisterResult errorCode:"+errorCode+",errorReason:"+errorReason);
}
@Override
public void onNotificationMsgClicked(String jsonExtra) {
//通知栏点击时附加参数回调,返回控制台填写的附加参数键值对(json格式)
Log.i(TAG,"onNotificationMsgClicked jsonExtra:"+jsonExtra);
}
@Override
public void onNotificationMsgArrived(String jsonExtra) {
//通知栏到达时附加参数回调,返回控制台填写的附加参数键值对(json格式)
Log.i(TAG,"onNotificationMsgArrived jsonExtra:"+jsonExtra);
}
@Override
public void onReceivePushMsg(String pushMsg) {
//返回透传消息数据
Log.i(TAG,"onReceivePushMsg:"+pushMsg);
}
}