我就开始集成,这一集成就开始入坑了,唉,妈的真心真心是个坑,我开始集成一家,激光推送,结果收到到时可以收到了,但是app杀死不行,



测试说了这怎么行,产品说了我要把这些数据保存起来,草这是又添加一个需求我擦,让我歇会。





2.我又默默集成了小米推送,我们测试机是小米推送,我觉行了可以了,结果我们有个同事用的华为我草,算了华为我集成了,集成华为,我觉的华为是最坑的,那个文档叫一个乱呀,我擦,后来我一个女测试绝然用的vivo我有点想杀人感觉了,行我在集成vivo行吧,我擦他妹子。五家我草,华丽



华丽的五家了,一个推送集成五家可以可以。最坑的是华为,





3.那怎么推送呢,我判断了手机型号,有华为,荣耀等字眼的模糊比较,用华为推送,小米也一样,你别说那推送秒到,不管app是否挂着。





4.记得跳转的时候activiy四种模式问题,华为比较坑的是,点击事件是点击,跟消息内容没有办毛钱关系,消息内容你想存起来,你必须发一条通知



一条透传,透传用来保存,通知用来显示,包在客户端的时候,你可以用一个集合保存起这个集合来,然后跟时间进行排序。





5.华为推送需要打包签名的md,获取过来发送给华为。





6.现在我来贴代码



@Override
public void onToken(Context context, String tokenIn, Bundle extras) {
    Intent intent = new Intent();
    intent.setAction(ACTION_TOKEN);
    intent.putExtra(ACTION_TOKEN, tokenIn);
callBack(intent);
    intent = new Intent();
    intent.setAction(ACTION_UPDATEUI);
    intent.putExtra("log",  "保存值:" + tokenIn);
callBack(intent);
if (!TextUtils.isEmpty(tokenIn)){
        LSharePreference.getInstance(context).setString(SharePreferenceName.HUAWEIPUSH,tokenIn);
        sendChannelId(context,tokenIn);
    }

}
@Override
public boolean onPushMsg(Context context, byte[] msg, Bundle bundle) {
try {
public void onEvent(Context context, Event event, Bundle extras) {
    Intent mIntent = new Intent();
    String userName = LSharePreference.getInstance(context).getString(SharePreferenceName.USERNAME);
    Intent intent = new Intent();
    intent.setAction(ACTION_UPDATEUI);
int notifyId = 0;
if (Event.NOTIFICATION_OPENED.equals(event) || Event.NOTIFICATION_CLICK_BTN.equals(event)) {
        notifyId = extras.getInt(BOUND_KEY.pushNotifyId, 0);
if (0 != notifyId) {
            NotificationManager manager = (NotificationManager) context
                    .getSystemService(Context.NOTIFICATION_SERVICE);
            manager.cancel(notifyId);
        }
    }
    String toJson = LSharePreference.getInstance(context).getString(SharePreferenceName.MessageBean);
    Calendar calendar = Calendar.getInstance();
//年
    int year = calendar.get(Calendar.YEAR);
//月
    int month = calendar.get(Calendar.MONTH) + 1;
//日
    int day = calendar.get(Calendar.DAY_OF_MONTH);
//小时
    int hour = calendar.get(Calendar.HOUR_OF_DAY);
//分钟
这个是华为推送集成
下面是小米推送
*/
@Override
public void onReceivePassThroughMessage(Context context, MiPushMessage message) {
this.mContext=context;
if (!TextUtils.isEmpty(message.getTopic())) {
        mTopic = message.getTopic();
    } else if (!TextUtils.isEmpty(message.getAlias())) {
        mAlias = message.getAlias();
    }

    Message msg = Message.obtain();
    msg.obj = log;
    Toast.makeText(context, log, Toast.LENGTH_LONG).show();
}透传的时候
public void onNotificationMessageClicked(Context context, MiPushMessage message) {
this.mContext=context;
if (!TextUtils.isEmpty(message.getTopic())) {
        mTopic = message.getTopic();
    } else if (!TextUtils.isEmpty(message.getAlias())) {
        mAlias = message.getAlias();
    }

    Message msg = Message.obtain();
if (message.isNotified()) {
        msg.obj = log;
    }这个里面通知消息内容



public void onNotificationMessageArrived(Context context, MiPushMessage message) {
this.mContext=context;
    String userName = LSharePreference.getInstance(context).getString(SharePreferenceName.USERNAME);
if (!TextUtils.isEmpty(message.getTopic())) {
        mTopic = message.getTopic();
    } else if (!TextUtils.isEmpty(message.getAlias())) {
        mAlias = message.getAlias();
    }

    String toJson = LSharePreference.getInstance(context).getString(SharePreferenceName.MessageBean);
    Calendar calendar = Calendar.getInstance();
这个是点击触发
/**
 * 用来接受客户端向服务器发送注册命令消息后返回的响应
 *
 * @param context
 * @param message
 */
@Override
public void onReceiveRegisterResult(Context context, MiPushCommandMessage message) {
this.mContext=context;
    String command = message.getCommand();
    List<String> arguments = message.getCommandArguments();
if (MiPushClient.COMMAND_REGISTER.equals(command)) {
if (message.getResultCode() == ErrorCode.SUCCESS) {
            LSharePreference.getInstance(context).setString(SharePreferenceName.XIAOMIPUSH,arguments.get(0));

        }
    }
}其他都差不多,都一样,推送原理其实都差不多,。