Android极光推送自定义通知

    private void showInspectorRecordNotification() {
        RemoteViews customView = new RemoteViews(context.getPackageName(), R.layout.view_custom);
        customView.setTextViewText(R.id.tvName_inspectPlan, planInfo.convertlineId2lineName(context, MyApplication.getInstance().getAppData().getUserId()));
        customView.setTextViewText(R.id.tvTime_inspectPlan, planInfo.getPlanYm());
        customView.setTextViewText(R.id.tvPlanSate_inspectPlan, planInfo.convertstateId2stateText(context));

        NotificationCompat.Builder mBuilder = new Builder(context);
        mBuilder.setContent(customView)
                .setContentIntent(getDefalutIntent(PendingIntent.FLAG_UPDATE_CURRENT))
                .setWhen(System.currentTimeMillis())
                .setTicker("")
                .setPriority(Notification.PRIORITY_DEFAULT)
                .setOngoing(false)
                .setSmallIcon(R.mipmap.icon);
        Notification notify = mBuilder.build();
        notify.contentView = customView;
        notify.flags |= Notification.FLAG_AUTO_CANCEL; // 点击通知后通知栏消失
        // 通知id需要唯一,要不然会覆盖前一条通知
        int notifyId = (int) System.currentTimeMillis();
        NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.notify(notifyId, notify);
    }
    @Override
    public void onReceive(Context context, Intent intent) {
        if (null == mNotificationManager) {
            mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        }

        this.context = context;

        Bundle bundle = intent.getExtras();
        Util.soutLong(TAG, "onReceive - " + intent.getAction());

        if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {//注册
            Util.soutLong(TAG, "JPush用户注册成功");
        } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
            Util.soutLong(TAG, "接受到推送下来的自定义消息");
            // 在这里显示自定义通知
        } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
            Util.soutLong(TAG, "接受到推送下来的通知");
            // 这里会显示极光推送默认的通知,自定义能力有限
        }
    }

效果是可以实现,不过当发送的通知大于一条的时候,第二条通知会把第一条通知覆盖。即只会显示一条通知,查了一些资料后终于找到原因:

int notifyId = (int) System.currentTimeMillis(); 发送通知的 notifyId 需要唯一通知才不会被覆盖,否则系统认为是在更新通知

时间: 2024-10-12 20:00:49

Android极光推送自定义通知的相关文章

android极光推送初步了解...

推送可以及时,主动的与用户发起交互 (1)继承jar包,照示例AndroidManifest.xml添加. (2)自定义MyApp继承自Application,在onCreate方法中调用JPushInterface.init(MainActivity.this); 或者在Activity的onCreate中调用. (3)另外,在activity的onResume方法要调用JPushInterface.onResume(this);否则,推送不会出现, 在onPause中调用JPushInter

android极光推送

版权声明:本文为博主原创文章,未经博主允许不得转载. Android开发记录18-集成推送服务的一点说明 关于推送服务,国内有很多选择,笔者也对它们进行了一个详细的对比,一般我们产品选择推送服务主要考量以下几个要素: 1.是否收费,如何收费? 2.推送内容是是什么(是否包含通知.消息.富媒体等等) 3.稳定性.及时性如何? 4.集成难度是否简单 5.支持平台有哪些(主流Android.IOS) 6.服务端支持语言(Java.C#.PHP.Python等) 下面笔者例举国内主要的一些推送服务: 来

Android 极光推送集成

集成Jpush 1.用Android Studio创建一个Demo 2.创建激光推送开发者账号,要创建极光推送开发者帐号,请访问极光推送官方网站https://www.jiguang.cn/push 3.在Portal上创建应用 使用注册账号登陆,进入极光控制台后,点击"创建应用"按钮.创建帐号进入极光推送后,首先显示的是创建应用的界面.填上你的应用程序的名称,以及 Android包名这二项就可以了. 4.手动集成,导入相关文件 http://docs.jiguang.cn/jpush

android极光推送学习

什么是推送呢? 一种图片让你明白什么是推送: 这就是推送: 就是服务器可以实时的将消息发送到客户端 首先要理解一些几个概念: 长连接和段连接: .长连接是指客户端和服务器之间始终建立着一个通信连接,在连接没有中断之前,客户端和服务器之间可以随时进行通信. .短连接是指通讯双方有数据交互是,就建立一个连接,数据发送完成后,则断开此连接. 长连接实现的即时通信叫:推送(也就是今天的主题) 短连接实现的即时通信叫:轮询.(客户端每隔一段时间询问服务器是否有新消息) 国内的第三方推送平台: 极光推送 个

【android极光推送】—从客户端到后台,一文通吃

前记 推送原理浅析 平台说明 概念解释 推送的三种实现方式 客户端直接向推送服务方发送Http请求 项目服务器通过Http转发推送请求至推送服务方 项目服务端使用SDK进行功能集成 关于推送的种类概述 android客户端初步实现 集成SDK说明 集成步骤 1下载官方提供的SDK集成包 2手动导入SDK 3在极光的官网创建一个应用 4编写一个MyApplication类初始化SDK 5配置 AndroidManifestxml wampServer服务端配置 配置推送SDK 通过composer

android 极光推送 声音与振动 的关闭和开启

前言:最近刚好在写一些推送方面的东西,又是新手,不断在网上找资料,很少,不过还是找到了一些,反正百度我是再也不想百度了,谷歌一下子就能找到想要的. 废话不多说. 1.主要方法就是如下一个函数 private void setSoundAndVibrate(boolean isOpenSound,boolean isOpenVibrate){ BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder(activi

Android极光推送jPush混淆解决方案终极篇

今天在做混淆时,极光推送报错了,错误如下:(下面错误代码从别的文章摘录而来,因为已经解决,就不再显示我自己的错误信息了,基本是一致的,除了时间.) <span style="font-size:18px;">[2013-09-23 20:30:59 - TEST] Proguard returned with error code 1. See console [2013-09-23 20:30:59 - TEST] Note: there were 105 duplica

android 极光推送sdk集成

一.注册 二.在官网登录,右上角,点击控制台 进去后点创建应用 填好应用名称和应用包名 点击下面的图片 左上角有一个选择应用,进入你刚才创建的应用,你会得到一个AppKey,后面会用到 三.创建应用后,我们来创建一个应用.注意应用名称和包名要和刚才的相同. 然后去官网->文档->资源下载->JPush->下载Android-SDK,如果需要x86 SDK和MIPS SDK框架的,可以全部下载. 四.将下载的文件解压,libs文件夹下面的文件全部复制粘贴到你项目的libs中,将jpu

.net平台借助第三方推送服务在推送Android消息(极光推送)

.net平台借助第三方推送服务在推送Android消息(极光推送) 最近做的.net项目(Windows Service)需要向Android手机发送推送消息,真是有点困难,没有搞过就不停的搜文档,最后看到了一个开源项目PushSharp,可以在.net平台推送IOS,Android,Windows Phone等设备消息,大喜,然后先做了IOS的,成功了,但是做Android的时候遇到了问题,一直推送不成功,程序执行了,但是推送一直出不来,后来费劲的在网上搜,没有找到,最后放弃使用这种推送And