个推推送自定义通知图标
一、需求背景
1.1 背景描述
通知图标可做为一个应用的标识,方便在手机通知栏显示应用的通知推送消息,也便于用户在第一时间辨识是哪个应用都消息做出对应的消息处理。
如果需要根据不同推送场景进行推送,还可以设置多套图标区分应用场景。
比如:微信和QQ是通讯工具,通知栏收到微信或者QQ的消息后,通知中心会在消息文本前显示微信或者QQ的图标,方便第一时间处理通讯消息。
1.2 名称解释
名词 | 解释 |
---|---|
小图标push_small.png | 会展示在顶部状态栏和通知左上角位置,push_small 只能内置, 不能修改 |
通知图标push.png | 将会作为通知展示图标,会展示在通知内容右侧。 |

1.3 各渠道支持情况
渠道 | 小图标(push_small.png) | 右侧通知图标(push.png) |
---|---|---|
个推 | 支持 | 支持 |
APNs | 支持 | 支持 |
华为 | 支持 | 不支持 |
荣耀 | 支持 | 支持 |
小米 | 支持 | 不支持 |
魅族 | 支持 | 不支持 |
OPPO | 支持 | 不支持 |
VIVO | 支持 | 不支持 |
二、功能实现
- Android 在线个推通道支持设置小图标push_small.png和右侧通知图标push.png;离线厂商通道小图标可客户端嵌入设置,通知图标暂不支持配置(通知图片内容可看下各厂商富文本处理)。
- iOS在线需要走透传渠道,暂不支持动态设置小图标和通知图标;离线apns通道可通过多媒体设置通知图标。
- 开发者可通过调用 个推服务端 api 或者直接从 个推开发者中心 页面推送。
2.1 Android
2.1.1 客户端
2.1.2 服务端 API
小图标push_small.png
只支持客户端嵌入,服务端暂不支持动态推送时设置小图标。
通知图标push.png
如果您需要根据不同推送场景切换不同通知栏图标或者其他配置多套通知栏图标的场景
- 先在资源目录的 res/drawable-ldpi/、res/drawable-mdpi/、res/drawable-hdpi/、res/drawable-xhdpi/、res/drawable-xxhdpi/ 等各分辨率目录下放置相应的多套通知图标,例如
push1.png
、push2.png等
- 通过 服务端推送 API 参数指定通知栏图标名称,如:
名称 | 类型 | 是否必需 | 默认值 | 描述 |
---|---|---|---|---|
title | String | 是 | 无 | 通知消息标题,长度 ≤ 50 |
body | String | 是 | 无 | 通知消息内容,长度 ≤ 256 |
logo | String | 否 | 无 | 通知的图标名称,包含后缀名(需要在客户端开发时嵌入),如“push.png”,长度 ≤ 64 |
{
"push_message":{
"notification":{
"title":"请填写你的通知标题",
"body":"请填写你的通知内容",
"logo":"logo.png",
"click_type":"intent",
"intent":"intent:#Intent;action=;end"
}
}
}
2.1.3 个推开发者中心

2.2 iOS
2.2.1 客户端
支持版本:
iOS 10 及以上的系统
客户端设置:
- 在集成个推SDK时,可以添加 Notification Service Extension,实现 多媒体展示。
涉及代码:
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
self.contentHandler = contentHandler;
self.bestAttemptContent = [request.content mutableCopy];
NSLog(@"----将APNs信息交由个推处理----");
[GeTuiExtSdk handelNotificationServiceRequest:request withAttachmentsComplete:^(NSArray *attachments, NSArray* errors) {
//注意:是否修改下发后的title内容以项目实际需求而定
//self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [需求而定]", self.bestAttemptContent.title];
self.bestAttemptContent.attachments = attachments; //设置通知中的多媒体附件
NSLog(@"个推处理APNs消息遇到错误:%@",errors); //如果APNs处理有错误,可以在这里查看相关错误详情
self.contentHandler(self.bestAttemptContent); //展示推送的回调处理需要放到个推回执完成的回调中
}];
}
2.2.2 服务端 API
multimedia说明:
该字段为Array类型,最多可设置3个子项,每个参数定义如下所示:
名称 | 类型 | 是否必需 | 默认值 | 描述 |
---|---|---|---|---|
url | String | 是 | 无 | 多媒体资源地址 |
type | Number | 是 | 无 | 资源类型(1.图片,2.音频,3.视频) |
only_wifi | Boolean | 否 | false | 是否只在wifi环境下加载,如果设置成true,但未使用wifi时,会展示成普通通知 |
{
"ios":{
"type":"notify",
"payload":"自定义消息",
"aps":{
"alert":{
"title":"通知标题",
"body":"通知内容"
},
"content-available":0,
"sound":"com.gexin.ios.silence",
"category":"ACTIONABLE"
},
"auto_badge":"+1",
"multimedia": [{
"url": "https://xxx",
"type": 1,
"only_wifi": false
}]
}
}
2.2.3 个推开发者中心后台

编辑:yimen,如若转载,请注明出处:https://www.yimenapp.com/kb-yimen/15468/
部分内容来自网络投稿,如有侵权联系立删