欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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,就需要和服务器约定了 ,并且在友盟开发者平台配置。