工作回顾
TIM发送消息
public static MessageInfo buildCustomJsonMessage(String type, String message) {
// 发送一条文本消息"nice to meet u",并在消息中 @ 群成员 user1
TIMMessage msg = new TIMMessage();
TIMTextElem txtElem = new TIMTextElem();//第一个元素是文本元素
txtElem.setText(message);
if (msg.addElement(txtElem) != 0) {
QLog.e("MessageInfoUtil", "add text elem failed");
return null;
}
// 填充自定义的消息协议
JSONObject remindProto = new JSONObject();
remindProto.put("type", type);
remindProto.put("message", message);
// 根据自己定义的协议构建自定义消息元素
TIMCustomElem customElem = new TIMCustomElem();
//customElem.setDesc("remind msg");
customElem.setData(remindProto.toString().getBytes("utf-8"));
//setExt在推送消息中的ext字段添加内容extras=Bundle[{pushMsg=[{"ext":"fghbj"},{"msgid":"15715871"}]}]
customElem.setExt(message.getBytes());
//一条组合消息中只能包含一个 TIMCustomElem 自定义消息元素。
if (msg.addElement(customElem) != 0) {
QLog.e("MessageInfoUtil", "add custom elem failed");
return null;
}
MessageInfo info = new MessageInfo();
info.setExtra(message);
info.setMsgTime(System.currentTimeMillis());
info.setSelf(true);
info.setTIMMessage(msg);
info.setFromUser(TIMManager.getInstance().getLoginUser());
info.setMsgType(MessageInfo.MSG_TYPE_TEXT);
return info;
}
通知栏消息点击后
------------------------------
小米得到离线推送内容
@Override
public void onNotificationMessageClicked(Context context, MiPushMessage miPushMessage) {
Log.d(TAG, "push event onNotificationMessageClicked: "+miPushMessage.toString());
//默认不会主动打开程序
}
messageId={scm54095558589703691T9},
passThrough={0},alias={null},topic={null},userAccount={null},content={%E9%A3%8E%E5%AF%92},description={风寒},
title={(001、test)},isNotified={true},notifyId={1},notifyType={-1}, category={null},
extra={{ext=风寒, sound_uri=android.resource://com.sunshine.mhs.pension.physician/2131492864, msgid=15618349}}
2019-05-28 ? D/XiaomiMsgReceiver: push event onNotificationMessageClicked: messageId={scm52316559021115698WF},
passThrough={0},alias={null},topic={null},userAccount={null},content={%E8%A1%8C%E6%AD%A3%E7%89%88%7Bcustom+msg%7D},description={行正版{custom msg}},
title={新消息},isNotified={true},notifyId={1},notifyType={-1}, category={null},
extra={{ext={"type":"2","message":"行正版"}, sound_uri=android.resource://com.sunshine.mhs.pension.physician/2131492864, msgid=3427396861}}
-----
华为得到离线推送内容
@Override
public void onEvent(Context context, Event event, Bundle extras) {
Log.i(TAG, "push event onEvent:"+" "+event.name()+" extras="+extras.toString());
...默认打开程序
}
push event onEvent: NOTIFICATION_OPENED extras=Bundle[{pushMsg=[{"ext":"fghbj"},{"msgid":"15715871"}]}]
通过msg.extra方法获取到封装好的json字符串,这个JSON是和后台商量好的(包含:打开APP,打开链接,跳转到指定页面,统称为:type)
-----
VIVO得到离线推送内容(无法获取内容。只能把消息内容放在customElem.setDesc)
不管是发送text还是custom,vivo接收的东西是一样的。
public class VIVOPushMessageReceiverImpl extends OpenClientPushMessageReceiver {
onNotificationMessageClicked(Context context, UPSNotificationMessage upsNotificationMessage)
2019-05-29 com.sunshine.mhs.pension.physician I/VIVOPushMessageReceiver: push event onNotificationMessageClicked:UPSNotificationMessage{mTargetType=0, mTragetContent='', mTitle='新消息', mContent='fhjk{custom msg}', mNotifyType=4, mPurePicUrl='', mIconUrl='', mCoverUrl='', mSkipContent='', mSkipType=1, mShowTime=false, mMsgId=583261107864555520, mParams={}}
2019-05-29 com.sunshine.mhs.pension.physician I/vivopush: open vivo push success regId = 15590998731281250806076