Android 友盟推送原理解析
程序员文章站
2022-08-11 09:53:51
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,就需要和服务器约定了 ,并且在友盟开发者平台配置。
推荐阅读
-
Android插件化原理解析--插件化加载机制
-
解析android 流量监测的实现原理
-
Android中实现「类方法指令抽取方式」加固方案原理解析
-
Android 操作系统获取Root权限 原理详细解析
-
荐 【Android】LeakCanary原理解析
-
Android 友盟推送原理解析
-
Android消息机制原理,仿写Handler Looper源码解析跨线程通信原理--之仿写模拟Handler(四)
-
Android多线程(二)消息处理机制---Handler、Message、Looper源码原理解析
-
Android消息机制(Handler原理)-完全解析
-
Android 推送之原理与初触Androidpn(Android Push Notification)