Android 友盟推送原理解析
程序员文章站
2022-05-07 22:01:43
android 友盟推送原理解析,最近项目使用推送是友盟推送,实际上推送原理相同,但是友盟推送和极光推送在android端的代码编写还是有很大差别的。极光推送我记得是定义广播,然后...
android 友盟推送原理解析,最近项目使用推送是友盟推送,实际上推送原理相同,但是友盟推送和极光推送在android端的代码编写还是有很大差别的。极光推送我记得是定义广播,然后在广播中发送通知,在设置跳转以一类的,但是在友盟推送中,友盟封装好了,有响应的回调接口。
友盟推送自定义通知:
final umengmessagehandler messagehandler = new umengmessagehandler() { //自定义通知 @override public notification getnotification(context context, umessage msg) { switch (msg.builder_id) { case build_id: return super.getnotification(context, msg); default: //默认为0,若填写的builder_id并不存在,也使用默认。 notification.builder builder = new notification.builder(context); remoteviews mynotificationview = new remoteviews(context.getpackagename(), r.layout.notification_view); mynotificationview.settextviewtext(r.id.notification_title, msg.title); mynotificationview.settextviewtext(r.id.notification_text, msg.text); mynotificationview.setimageviewbitmap(r.id.notification_large_icon, getlargeicon(context, msg)); mynotificationview .setimageviewresource(r.id.notification_small_icon, getsmalliconid(context, msg)); builder.setcontent(mynotificationview) .setsmallicon(getsmalliconid(context, msg)) .setticker(msg.ticker) .setautocancel(true); return builder.build(); } } //自定义消息 @override public void dealwithcustommessage(final context context, final umessage msg) { new handler(context.getmainlooper()).post(new runnable() { @override public void run() { // 对于自定义消息,pushsdk默认只统计送达。若开发者需要统计点击和忽略,则需手动调用统计方法。 boolean isclickordismissed = true; if (isclickordismissed) { //自定义消息的点击统计 utrack.getinstance(context).trackmsgclick(msg); } else { //自定义消息的忽略统计 utrack.getinstance(context).trackmsgdismissed(msg); } toast.maketext(context, msg.custom, toast.length_long).show(); } }); } }; pushagent.getinstance(context).setmessagehandler(messagehandler);
点击通知跳转的回调,友盟已经帮我们写好了:
umengnotificationclickhandler notificationclickhandler = new umengnotificationclickhandler() { @override public void launchapp(context context, umessage msg) { super.launchapp(context, msg); /** * todo 点击跳转,后续处理 */ } }; pushagent.getinstance(context).setnotificationclickhandler(notificationclickhandler);
如果需要跳转到相应的activity,就需要和服务器约定了 ,并且在友盟开发者平台配置。