关于原生Android5.0的通知栏大图标适配规范,JPush没有给出适配方案

android
标签: #<Tag:0x00007fb83ff959f8>

(Dalvikvm Cp💋) #1

原生Android5.0通知消息下拉显示是同时显示APP图标和SmallIcon的



如图所示,这才是Android5.0默认的显示状态,但是使用JPush用默认样式0推送的消息,全都会显示成为
d251a4ad217f24d5789fd8fe7f689fd0ac6d13e9_1_690x819
变成这样的原因,是因为JPush源码里,没有设置setLargeIcon和setColor这两个关键参数,造成系统认为不存在LargeIcon,所以样式自动变成了SmallIcon,造成显示错误。这是你们的源码

很明显,你们只设置了SmallIcon却完全没有理会LargeIcon的问题。
如果想在Android5.0上完全显示正确的通知栏样式,必须可以设置这3个属性才可以做到

说这么多,我想说,官方大佬,请联系一下你们的开发人员,这东西,根本是加两行代码的事,请不要再那里复制粘贴你们那个统一的说法了,你们的那个文档,根本解决不了这个问题,你们那个jpush_notification_icon只能用来设置smallIcon,你们整个代码里都没有大icon的概念,难道不改改这个问题么?


(12) #2

当前我们并未设置大图标,将在下一个版本实现。可关注更新列表
https://docs.jiguang.cn/jpush/updates/


(12) #3

https://docs.jiguang.cn/jpush/updates/#jpush-android-sdk-v317

已发布

在 rest API 中新增了字段 large_icon
https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/#notification


(Dalvikvm Cp💋) #4

您好,看到了您给出的解决方案,由于目前我们后台暂定下周1才有时间与我进行联调,所以目前我是用的JPush官网的网页推送测试的。


这里我已经试过写资源文件,以及上传,以及网路图片资源,在我这边的设备上,大图标均不生效,请问这是怎么回事?


(12) #5

SDK 升级了吗?路径是否正确,如果上传网络图片结果如何。

提供你的设备的机型和系统

并提供你的客户端日志信息


(Dalvikvm Cp💋) #6

SDK已经升级为3.1.7版本,我在日志里看,回复信息确实可以收到n_large_icon字段,但是在手机里,largerIcon并没有生效,我测试了2个设备,均是同样的结果。

设备:coolpad 5367 Android版本:原生Android5.1
设备:虚拟机Galaxy Nexus Android版本:原生Android8.1

这是coolpad的日志,虚拟机那个跟这个大同小异

D/JIGUANG-JPush: [JPushInterface] action:init - sdkVersion:3.1.7, buildId:421
D/JIGUANG-JPush: [JPushDataAction] Action - onActionRun
D/JIGUANG-JPush: [PushServiceCore] bundle:Bundle[{action=com.tangyin.mobile.jrlm.intent.ALIAS_TAGS, proto_type=1, seq_id=14339, tags=[debug], alias=null, protoaction_type=2, sdktype=JPUSH}]
D/JIGUANG-JPush: [PushServiceCore] Action - handleServiceAction - action:com.tangyin.mobile.jrlm.intent.ALIAS_TAGS
D/JIGUANG-JPush: [TagAliasHelper] tagalias:[TagaliasRequest] - appKey:5b806f8581cd113dade82ddc, action:{"platform":"a","op":"set","tags":["debug"]} - [Request] - [JHead] - len:0, version:1, command:28, rid:14339, sid:0, juid:0
D/JIGUANG-JPush: [JPushRequestHelper] Action - sendJPushRequest, timeout:20000, threadId:2576
D/JIGUANG-JCore: [RequestCacheManager] Action - sendRequestInternal - connection:2613, timeout:20000,sdkType:JPUSH, threadId:2568
D/JIGUANG-JPush: [JPushDataAction] response:[TagaliasResponse] - action:{"code":0} - JResponse{code=0}
D/JIGUANG-JCore: [NetworkingClient] Received bytes - len:36, connection:2613, pkg:com.tangyin.mobile.jrlm
D/JIGUANG-JCore: [NetworkingClient] Network listening...
D/JIGUANG-JCore: [HttpHelper] status code:200 retry left:2
D/JIGUANG-JPush: [JPushDataAction] response:[MessagePush] - msgType:0, msgId:38280598930772961, msgContent:com.tangyin.mobile.jrlm
    5b806f8581cd113dade82ddc
    {"ad_id":"38280598930772961","m_content":{"ad_t":0,"n_alert_type":7,"n_category":"","n_content":"测试","n_extras":{},"n_flag":1,"n_large_icon":"https://cdn.duitang.com/uploads/item/201408/28/20140828142218_PS4fi.thumb.700_0.png","n_priority":0,"n_style":0,"n_title":""},"n_builder_id":0,"n_only":1,"show_type":4} - JResponse{code=0}
D/JIGUANG-JCore: [NetworkingClient] Received bytes - len:404, connection:2613, pkg:com.tangyin.mobile.jrlm
D/JIGUANG-JCore: [NetworkingClient] Network listening...
D/JIGUANG-JCore: [HttpHelper] status code:200 retry left:2
W/JIGUANG-JPush: [NotificationHelper] Get network picture failed.
D/JIGUANG-JPush: [NotificationHelper] running flag:false
D/JIGUANG-JPush: [NotificationHelper] notification intent component=ComponentInfo{com.tangyin.mobile.jrlm/cn.jpush.android.service.PushReceiver}
D/JIGUANG-JPush: [NotificationHelper] notification notify:534184840
D/JIGUANG-JPush: [NotificationHelper] Send push received broadcast to developer defined receiver
D/JIGUANG-JCore: [HttpHelper] status code:200 retry left:2
I/JIGUANG-JCore: [ReportHelper] periodTasks...
D/JIGUANG-JCore: [PushReceiver] onReceive - cn.jpush.android.intent.ACTION_REPORT_HISTORY
D/JIGUANG-JPush: [PushReceiverCore] onReceive - cn.jpush.android.intent.ACTION_REPORT_HISTORY
D/JIGUANG-JCore: [JiguangTcpManager] Send heart beat
D/JIGUANG-JCore: [NetworkingClient] Received bytes - len:36, connection:2613, pkg:com.tangyin.mobile.jrlm
D/JIGUANG-JCore: [NetworkingClient] Network listening...
D/JIGUANG-JCore: [JiguangTcpManager] Action - onHeartbeatSucceed - connection:2613

这是表现截图
1
2
两个设备的大图标均没有正常显示


(12) #7

注意要求 图标不能大于 30KB


(Dalvikvm Cp💋) #8

原来http连接的图片也不能大于30kb,我测试了,只要传输小于30kb的图片,大图标就可以显示了,但是,我要是传app资源文件呢?就比如R.drawable.ic_launcher,目前xh大小问12kb,xxh大小为20kb是符合要求的,为什么发送资源文件名称就无法显示大图标呢?


(12) #9

本地资源名称直接填名称『ic_launcher』即可。不要带任何后缀和前缀。

你看看你传的正不正确?和你的资源名称对比。


(Dalvikvm Cp💋) #10

已更正,并且已生效,感谢解答,如果是调用本地资源还有30kb的大小限制么?


(12) #11

本地资源没有30KB限制。只要本地有这个资源就行。网络图标才有30KB限制,文档上的说法我们会修改一下。