token放在头部的还是body
重新从request获取不到吗
首先 重写PushReceiver类onPushMsg、onPushState、onToken、onEvent方法,获取token在这里接收到后台发过来token。
//<!--接收Push消息(注册、透传消息、通知栏点击事件)广播-->
public class HuaweiPushRevicerQB extends PushReceiver {
private static final String TAG = "华为广播1";
/**
* 透传消息会执行这个方法
* @param context
* @param bytes 消息的内容
* @param s Token
*/
@Override
public void onPushMsg(Context context, byte[] bytes, String s) {
super.onPushMsg(context, bytes, s);
Charset charset = Charset.defaultCharset();
ByteBuffer buf = ByteBuffer.wrap(bytes);
CharBuffer cBuf = charset.decode(buf);;
Log.d(TAG, "onPushMsg: "+s+"---"+ cBuf.toString());
}
/**
* 连接状态的回调方法
* @param context
* @param b
*/
@Override
public void onPushState(Context context, boolean b) {
super.onPushState(context, b);
Log.d(TAG, "onPushState: ");
}
/**
* getToken获取token值
* @param context
* @param s
* @param bundle
*/
@Override
public void onToken(Context context, String s, Bundle bundle) {
super.onToken(context, s, bundle);
String belongId = bundle.getString("belongId");
Log.d(TAG, "token:"+s+",belongId:"+belongId);
}
@Override
public void onEvent(Context context, Event event, Bundle bundle) {
Log.d(TAG, "onEvent: ");
if (Event.NOTIFICATION_OPENED.equals(event) || Event.NOTIFICATION_CLICK_BTN.equals(event)) {
int notifyId = bundle.getInt(BOUND_KEY.pushNotifyId, 0);
Log.i(TAG, "收到通知栏消息点击事件,notifyId:" + notifyId);
if (0 != notifyId) {
NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(notifyId);
}
}
String message = bundle.getString(BOUND_KEY.pushMsgKey);
super.onEvent(context, event, bundle);
}
}
写好接收广播后,就可以开始token请求了,执行HMSAgent.Push.getToken 返回0则说明请求成功,这时候HuaweiPushRevicerQB 就会收到广播并执行onToken,在onToken就能获取token值。