package com.jiang.android.push.miui; import android.content.Context; import android.text.TextUtils; import android.util.Log; import com.jiang.android.push.Message; import com.jiang.android.push.PushInterface; import com.jiang.android.push.utils.JHandler; import com.jiang.android.push.utils.JsonUtils; import com.jiang.android.push.utils.L; import com.jiang.android.push.utils.Target; import com.xiaomi.mipush.sdk.ErrorCode; import com.xiaomi.mipush.sdk.MiPushClient; import com.xiaomi.mipush.sdk.MiPushCommandMessage; import com.xiaomi.mipush.sdk.MiPushMessage; import com.xiaomi.mipush.sdk.PushMessageReceiver; import java.util.List; /** * 小米推送下来的消息运行在子线程 * Created by jiang on 2016/10/8. */ public class MiuiReceiver extends PushMessageReceiver { private static final String TAG = "MiuiReceiver"; private String mRegId; private long mResultCode = -1; private String mReason; private String mCommand; private String mMessage; private String mTopic; private String mAlias; private String mUserAccount; private String mStartTime; private String mEndTime; private static PushInterface mPushInterface; /** * @param pushInterface */ public static void registerInterface(PushInterface pushInterface) { mPushInterface = pushInterface; } public static PushInterface getPushInterface() { return mPushInterface; } @Override public void onReceivePassThroughMessage(final Context context, MiPushMessage message) { mMessage = message.getContent(); if (!TextUtils.isEmpty(message.getTopic())) { mTopic = message.getTopic(); } else if (!TextUtils.isEmpty(message.getAlias())) { mAlias = message.getAlias(); } else if (!TextUtils.isEmpty(message.getUserAccount())) { mUserAccount = message.getUserAccount(); } if (mPushInterface != null) { final Message result = new Message(); result.setMessageID(message.getMessageId()); result.setTitle(message.getTitle()); result.setMessage(message.getContent()); result.setExtra(mMessage); result.setTarget(Target.MIUI); try { // result.setExtra(JsonUtils.setJson(message.getExtra()).toString()); result.setExtra(message.getContent()); } catch (Exception e) { L.i("onReceivePassThroughMessage: " + e.toString()); result.setExtra("{}"); } JHandler.handler().post(new Runnable() { @Override public void run() { mPushInterface.onCustomMessage(context, result); } }); } } @Override public void onNotificationMessageClicked(final Context context, MiPushMessage message) { mMessage = message.getContent(); if (!TextUtils.isEmpty(message.getTopic())) { mTopic = message.getTopic(); } else if (!TextUtils.isEmpty(message.getAlias())) { mAlias = message.getAlias(); } else if (!TextUtils.isEmpty(message.getUserAccount())) { mUserAccount = message.getUserAccount(); } if (mPushInterface != null) { final Message result = new Message(); result.setNotifyID(message.getNotifyId()); result.setMessageID(message.getMessageId()); result.setTitle(mTopic); result.setMessage(mMessage); result.setTarget(Target.MIUI); try { result.setExtra(JsonUtils.setJson(message.getExtra()).toString()); // result.setExtra(message.getContent()); } catch (Exception e) { Log.e(TAG, "onNotificationMessageClicked: " + e.toString()); result.setExtra("{}"); } JHandler.handler().post(new Runnable() { @Override public void run() { mPushInterface.onMessageClicked(context, result); } }); } } @Override public void onNotificationMessageArrived(final Context context, MiPushMessage message) { mMessage = message.getContent(); if (!TextUtils.isEmpty(message.getTopic())) { mTopic = message.getTopic(); } else if (!TextUtils.isEmpty(message.getAlias())) { mAlias = message.getAlias(); } else if (!TextUtils.isEmpty(message.getUserAccount())) { mUserAccount = message.getUserAccount(); } if (mPushInterface != null) { final Message result = new Message(); result.setTitle(message.getTitle()); result.setMessageID(message.getMessageId()); result.setNotifyID(message.getNotifyId()); result.setMessage(message.getDescription()); result.setTarget(Target.MIUI); try { result.setExtra(JsonUtils.setJson(message.getExtra()).toString()); // result.setExtra(message.getContent()); } catch (Exception e) { L.i("onReceivePassThroughMessage: " + e.toString()); result.setExtra("{}"); } JHandler.handler().post(new Runnable() { @Override public void run() { mPushInterface.onMessage(context, result); } }); } } @Override public void onCommandResult(final Context context, MiPushCommandMessage message) { String command = message.getCommand(); List<String> arguments = message.getCommandArguments(); String cmdArg1 = ((arguments != null && arguments.size() > 0) ? arguments.get(0) : null); String cmdArg2 = ((arguments != null && arguments.size() > 1) ? arguments.get(1) : null); if (MiPushClient.COMMAND_REGISTER.equals(command)) { if (message.getResultCode() == ErrorCode.SUCCESS) { mRegId = cmdArg1; if (mPushInterface != null) { JHandler.handler().post(new Runnable() { @Override public void run() { mPushInterface.onRegister(context, mRegId); } }); } } else if (MiPushClient.COMMAND_SET_ALIAS.equals(command)) { if (message.getResultCode() == ErrorCode.SUCCESS) { mAlias = cmdArg1; if (mPushInterface != null) { JHandler.handler().post(new Runnable() { @Override public void run() { mPushInterface.onAlias(context, mAlias); } }); } } } else if (MiPushClient.COMMAND_UNSET_ALIAS.equals(command)) { if (message.getResultCode() == ErrorCode.SUCCESS) { mAlias = cmdArg1; } } else if (MiPushClient.COMMAND_SUBSCRIBE_TOPIC.equals(command)) { if (message.getResultCode() == ErrorCode.SUCCESS) { mTopic = cmdArg1; } } else if (MiPushClient.COMMAND_UNSUBSCRIBE_TOPIC.equals(command)) { if (message.getResultCode() == ErrorCode.SUCCESS) { mTopic = cmdArg1; } } else if (MiPushClient.COMMAND_SET_ACCEPT_TIME.equals(command)) { if (message.getResultCode() == ErrorCode.SUCCESS) { mStartTime = cmdArg1; mEndTime = cmdArg2; } } } } @Override public void onReceiveRegisterResult(Context context, MiPushCommandMessage miPushCommandMessage) { super.onReceiveRegisterResult(context, miPushCommandMessage); } public static void clearPushInterface() { mPushInterface = null; } }