资讯专栏INFORMATION COLUMN

【Android】Notification小结

chanjarster / 2537人阅读

摘要:通知最近使用为应用显示后台推送消息,在开发过程中遇到一些问题。原来的通知消息在高版本系统上会出现奇怪的问题。目前手上的测试机是低版本的,没有快速回复的操作项。可以显示多行文本的通知,通过并能增加新的一行文本内容。

Notification 通知

最近使用Notification为应用显示后台推送消息,在开发过程中遇到一些问题。重新整理以前写过的代码发现在Support包中NotificationCompat类,是为新旧版本的android系统做的兼容库。原来的通知消息在高版本android系统上会出现奇怪的问题。之后我用新版NotificationCompat重新写消息通知栏。解决完问题之后我重新整理了一下资料,熟悉新版通知的使用,文章内容浅显。另外奉上Google官方关于通知的API Guides上面都有详细的使用方法。
由于新版通知有很多内容是服务于高版本Android系统,所以有些通知类型会在一些低版本系统中不能实现相应的效果,其次由于国内手机厂商对系统重新定制导致一些通知样式也不能到达预期效果。这些问题需要在开发中引起注意,避免影响到app的用户体验,所以做好设备兼容性是最主要的问题。

文章的Demo地址

通知创建

Notification采用builder设计模式,通知栏的参数配置在builder中完成,再由builder来build通知实例Notification,最后NotificationManager显示通知消息。创建通知必须包含

NotificationCompat.Builder mBuilder =
        new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.notification_icon)
        .setContentTitle("My notification")
        .setContentText("Hello World!");
NotificationManager mNotificationManager =
    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(mId, mBuilder.build());
Builder参数
Method Introduction
setSmallIcon 设置通知小图标(必须设置项)
setLargeIcon 设置通知大图标
setContentTitle 设置通知标题(必须设置项)
setContentText 设置通知内容(必须设置项)
setDefaults 消息提醒模式 (声音/震动/提示灯...)
setSound 设置自定义消息提醒音
setVibrate 设置震动频率
setLights 设置提示灯显示
setOngoing 设置通知是否可以在通知列表清楚
setOnlyAlertOnce 通知如果已经存在不再提醒
setAutoCancel 消息点击之后是否还在通知栏中显示
setProgress 设置进度,在通知栏上显示进度样式
setContent 用于设置自定义通知
setContentIntent 设置通知点击跳转的内容
扩展布局通知

需要注意的是扩展布局通知只支持Android 4.1 及更高版本的系统,另外在一些国产机定制rom中可能不支持扩展布局通知,所以在使用扩展布局的需要慎重考虑。

BigPictureStyle

BigPictureStyle支持显示大图的通知,下面是几个可以设置的参数,通知图片显示通过bigPicture设置bitmap

setBigContentTitle

setSummaryText

bigLargeIcon

bigPicture

NotificationCompat.BigPictureStyle bigPictureStyle = new NotificationCompat.BigPictureStyle();
bigPictureStyle.setBigContentTitle("Title");
bigPictureStyle.setSummaryText("SummaryText");
Bitmap bigPicture = BitmapFactory.decodeResource(getResources(),R.drawable.android);
bigPictureStyle.bigPicture(bigPicture);
builder.setStyle(bigPictureStyle);

BigTextStyle

显示文本通知,可以显示更多文本内容。感觉和inboxStyle差不多。

setBigContentTitle

setSummaryText

bigText

NotificationCompat.BigTextStyle bigTextStyle = new NotificationCompat.BigTextStyle();
bigTextStyle.setBigContentTitle("Title");
bigTextStyle.bigText("BigText
BigText
BigText
BigText
BigText");
bigTextStyle.setSummaryText("SummaryText");
builder.setStyle(bigTextStyle);

MessagingStyle

消息通知,可快速回复message的通知。好像在Android N以上才能使用。目前手上的测试机是低版本的,没有快速回复的操作项。
addMessage
setConversationTitle

NotificationCompat.MessagingStyle messagingStyle = new NotificationCompat.MessagingStyle("UserName");
messagingStyle.addMessage("message",System.currentTimeMillis(),"JulyYu");
messagingStyle.setConversationTitle("Messgae Title");
builder.setStyle(messagingStyle);
InboxStyle

可以显示多行文本的通知,通过addline并能增加新的一行文本内容。

setBigContentTitle

setSummaryText

addLine

NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
String[] events = new String[]{"1","2","3","4"};
inboxStyle.setBigContentTitle("Event tracker details:");
inboxStyle.setSummaryText("SummaryText");
for (int i=0; i < events.length; i++) {
    inboxStyle.addLine(events[i]);
}
builder.setStyle(inboxStyle);

MediaStyle

多媒体播放通知,快捷的多媒体操作控件。可以自定义需要显示的操作控件内容。

setShowActionsInCompactView

setMediaSession

setShowCancelButton

setCancelButtonIntent

 builder.addAction(android.R.drawable.ic_media_rew,"",null);
 builder.addAction(android.R.drawable.ic_media_play,"",null);
 builder.addAction(android.R.drawable.ic_media_ff,"",null);
 NotificationCompat.MediaStyle mediaStyle = new NotificationCompat.MediaStyle();
 mediaStyle.setShowActionsInCompactView(0,1,2);
 mediaStyle.setShowCancelButton(true);
 builder.setStyle(mediaStyle);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/13468.html

相关文章

  • wap html5播放器和直播开发小结

    摘要:此文已由作者吴家联授权网易云社区发布。欢迎访问网易云社区,了解更多网易技术产品运营经验。播放器的设计思路重构后应该包含这些功能支持点播非加密的和直播播放兼容适配移动端根据平台自动选择使用还是。直播的一些特点直播状态的判断。 此文已由作者吴家联授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 去年年中的时候,借着产品改版的机会,将之前的h5播放器好好整理重构了一番...

    Miyang 评论0 收藏0
  • iOS开发基础篇--NSNotificationCenter使用小结

    摘要:所以使用的情况是两者有直接的关系,至于一方知道另一方的存在。这是一个我的交流群,群文件自行下载,不管你是小白还是大牛热烈欢迎进群,分享面试经验,讨论技术,大家一起交流学习成长希望帮助开发者少走弯路。 前言 最近公司组织两个星期的新人培训,事情安排的满满的,周末都没有。说好的一个星期一更新的博客中断了,让大家久等了,现在培训结束,终于又可以安安静静的做一个程序员了,好开心。。。 一、NS...

    dmlllll 评论0 收藏0
  • Android N 前瞻 - Notification

    摘要:日前已经发布了的开发者预览版,这比预期要提前了两个月。这条通知的作用是用来提示用户消息已经成功回复了。层级结构的最顶层是父级通知,显示通知群组的摘要信息。使用捆绑通知的时机子通知可以操作,并且每个子通知具有特定的操作。 Google 日前已经发布了 Android N 的开发者预览版,这比预期要提前了两个月。虽然国内的 Rom 通常会慢半拍,但是作为开发者提前了解一下 Android ...

    blair 评论0 收藏0
  • Notification通知栏

    摘要:当向系统发出通知时,它将先以图标的形式显示在通知栏中。通知栏和抽屉式通知栏均是由系统控制,用户可以随时查看。更新通知跟发送通知使用相同的方式。创建返回栈添加返回栈代码默认情况下,从通知启动一个,按返回键会回到主屏幕。 目录介绍 1.Notification简单概述 2.Notification通知用途 3.Notification的基本操作 3.1 Notification创建必要的...

    FWHeart 评论0 收藏0
  • Android通知栏介绍与适配总结(上篇)

    摘要:修改记录版本的通知栏消息功能上并未发生变化,右上角的缩减为了。增加了,允许可穿戴设备远程控制通知栏消息。锁屏状态下,可以控制通知栏消息的隐私程度。但是谷歌规定,自定义布局展示的通知栏消息最大高度是。具体适配不正常的机型有。 此文已由作者黎星授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 由于历史原因,Android在发布之初对通知栏Notification的设...

    fai1017 评论0 收藏0

发表评论

0条评论

chanjarster

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<