高德天气应用开发之十六:android 集成友盟消息推送机制(U-Push)

版权声明:本文为博主原创文章,未经允许不得转载,如有问题,欢迎指正,谢谢! https://blog.csdn.net/cbk861110/article/details/86683849

【版权说明】

1. 请支持原创,转载请注明出处:https://blog.csdn.net/cbk861110/article/details/86665564

2. 项目源码请移步:https://github.com/caobaokang419/WeatherApp(欢迎Github Fork&Star,框架和技术实现不妥之处,请帮忙指正),谢谢!

-------------------------------------------

基于MVVM框架的高德天气APP:


功能点实现说明:

  • 国内消息推送:集成Umeng推送平台(U-Push),三分钟实现SDK集成;


一、 技术背景:

U-Push 可轻松实现,后台配置,下发消息给应用,应用解析并弹框通知,实现应用消息Push功能。

二、 开发实现(三分钟可完成):

1、U-Push 集成步骤(SDK集成链接:https://developer.umeng.com/docs/66632/detail/98581):

1.) Appkey申请  2.) 接入Push SDK  3.) 基础接口引入 4.) 应用数据统计接口  5.) 消息推送  6.) 接入完成

2. SDK集成演示:

2.1 app gradle jar 添加:

//PushSDK必须依赖基础组件库,所以需要加入对应依赖
implementation 'com.umeng.umsdk:common:1.5.4'
//PushSDK必须依赖utdid库,所以需要加入对应依赖
implementation 'com.umeng.umsdk:utdid:1.1.5.3'
//PushSDK
implementation 'com.umeng.umsdk:push:5.0.2'

2.3 project gradle 添加:

maven { url 'https://dl.bintray.com/umsdk/release' }

2.3 云端生成的应用app key信息:

public class Constants {
    // um push
    public static final String UM_PUSH_APP_KEY = "5c4e7057b465f50f6300171f";
    public static final String UM_PUSH_MESSAGE_SECRET_KEY = "57bdbf9232a34e1d0bc882ae4759b64d";
    public static final String UM_PUSH_CHANNEL_NAME = "umeng_amap";
}

2.4 关键代码实现:

public class UmPushManager {
    private static final String TAG = "UmPushManager";

    /*私有构造*/
    private UmPushManager() {

    }

    public static void register(Context context) {
        // 在此处调用基础组件包提供的初始化函数 相应信息可在应用管理 -> 应用信息 中找到 http://message.umeng.com/list/apps
        // 参数一:当前上下文context;
        // 参数二:应用申请的Appkey(需替换);
        // 参数三:渠道名称;
        // 参数四:设备类型,必须参数,传参数为UMConfigure.DEVICE_TYPE_PHONE则表示手机;传参数为UMConfigure.DEVICE_TYPE_BOX则表示盒子;默认为手机;
        // 参数五:Push推送业务的secret 填充Umeng Message Secret对应信息(需替换)
        UMConfigure.init(
                context,
                Constants.UM_PUSH_APP_KEY,
                Constants.UM_PUSH_CHANNEL_NAME,
                UMConfigure.DEVICE_TYPE_PHONE,
                Constants.UM_PUSH_MESSAGE_SECRET_KEY);

        //获取消息推送代理示例
        PushAgent mPushAgent = PushAgent.getInstance(context);

        //注册推送服务,每次调用register方法都会回调该接口
        mPushAgent.register(new IUmengRegisterCallback() {

            @Override
            public void onSuccess(String deviceToken) {
                //注册成功会返回deviceToken deviceToken是推送消息的唯一标志
                //注册成功:deviceToken:-------->  AvMK_CTS9yPTiSuvEqQ20I7JLvqM5gBho_RFCISzBU50
                Log.i(TAG, "注册成功:deviceToken:-------->  " + deviceToken);
            }

            @Override
            public void onFailure(String s, String s1) {
                Log.e(TAG, "注册失败:-------->  " + "s:" + s + ",s1:" + s1);
            }
        });

        UmengMessageHandler messageHandler = new UmengMessageHandler() {

            /**
             * 自定义通知栏样式的回调方法
             */
            @Override
            public Notification getNotification(Context context, UMessage msg) {
                switch (msg.builder_id) {
                    case 1:
                        Notification.Builder builder = new Notification.Builder(context);
                        RemoteViews myNotificationView = new RemoteViews(context.getPackageName(),
                                R.layout.notification_um_push_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.getNotification();
                    default:
                        //默认为0,若填写的builder_id并不存在,也使用默认。
                        return super.getNotification(context, msg);
                }
            }
        };
        mPushAgent.setMessageHandler(messageHandler);

        UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler() {

            @Override
            public void dealWithCustomAction(Context context, UMessage msg) {
                Log.e(TAG, "click");
            }

        };

        mPushAgent.setNotificationClickHandler(notificationClickHandler);
    }
}

2.5 应用Application U-Push 注册:

public class WtApplication extends /*MultiDex*/Application {

    private void initConfig(){
        //umeng push register
        UmPushManager.register(this);
    }
}

-------------------------------------------

-------------------------------------------

文章目录(未完,待续):

一:android 应用子功能及移动框架总述 https://blog.csdn.net/cbk861110/article/details/86665564

二:android 高德天气API说明及城市天气查询实现 https://blog.csdn.net/cbk861110/article/details/86665655

三:android 自定义控件实现(ActionBar + PageIndicatorView) https://blog.csdn.net/cbk861110/article/details/86665790

四:android ViewPager实现左右页面滑动切换 https://blog.csdn.net/cbk861110/article/details/86665964

五:android应用权限动态申请 https://blog.csdn.net/cbk861110/article/details/86666321

六:android RecyclerView 封装及使用 https://blog.csdn.net/cbk861110/article/details/86666392

七:android Xutils3文件下载实现(高德天气城市配置) https://blog.csdn.net/cbk861110/article/details/86666573

八:android DiskLruCache 磁盘缓存 封装和使用 https://blog.csdn.net/cbk861110/article/details/86666664

九:android ThreadPoolExecutor线程池 封装及使用  https://blog.csdn.net/cbk861110/article/details/86667101

十:android 天气网络请求框架(retrofit2&okhttp3&Gson) 封装及使用  https://blog.csdn.net/cbk861110/article/details/86667375

十一:android RxAndroid(响应式编程) 异步网络请求实现 https://blog.csdn.net/cbk861110/article/details/86669178

十二:android DataBinding 数据和UI双向绑定实现 https://blog.csdn.net/cbk861110/article/details/86669708

十三:android room数据库 天气数据读写实现 https://blog.csdn.net/cbk861110/article/details/86670354

十四:android LiveData 使用方法(实现城市天气自动刷新) https://blog.csdn.net/cbk861110/article/details/86670531

十五:android ViewModel 使用方法 https://blog.csdn.net/cbk861110/article/details/86670703

十六:android 集成友盟消息推送机制(U-Push) https://blog.csdn.net/cbk861110/article/details/86683849

-------------------------------------------

【版权说明】

1. 请支持原创,转载请注明出处:https://blog.csdn.net/cbk861110/article/details/86665564

2. 项目源码请移步:https://github.com/caobaokang419/WeatherApp(欢迎Github Fork&Star,框架和技术实现不妥之处,请帮忙指正),谢谢!

猜你喜欢

转载自blog.csdn.net/cbk861110/article/details/86683849