我就开始集成,这一集成就开始入坑了,唉,妈的真心真心是个坑,我开始集成一家,激光推送,结果收到到时可以收到了,但是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));
}
}
}其他都差不多,都一样,推送原理其实都差不多,。