自定义通知铃声

自定义通知铃声

一、场景描述

1.1 场景描述

众所周知,消息推送是生活服务、金融理财、新闻资讯等各类 App 和用户之间交互的桥梁。App 通过通知栏消息,低成本、高效率地向用户告知产品功能更新、运营活动上线、日常新闻动态等重要消息。为了帮助用户不错过重要通知,使 App 和用户之间的交互更加顺畅,个推 SDK 还支持 App 开发者自定义通知铃声(区别于系统提示音),通过声音的方式,更加有效地提醒用户及时查阅关键消息。

1.2 名称解释

名词 解释
通知铃声 个推SDK自动处理在手机系统通知栏中展示通知栏消息时,响铃提醒用户。

1.3 各渠道支持情况

机型 个推渠道 厂商渠道
华为 支持 支持
荣耀 支持 不支持
小米 支持 支持
OPPO 支持 不支持
VIVO 支持 不支持
魅族 支持 不支持
IOS 支持 支持
FCM 支持 不支持

二、技术实现方案

自定义铃声需要客户端和服务端配合使用。

2.1 客户端实现

android

在客户端 app/src/main/res/raw 目录下放置铃声文件(支持 mp3、wav、mpeg 等多种格式的音频文件),例如设置铃声文件名为:ringing.mp3

ios

  • 自定义的音乐文件必须是aiff,wav,caf,mp3,并且不能超过30秒。

  • 把自制好的的铃声添加到项目的main bundle中后,在项目设置中Build Phases-Copy Bundle Resources中添加您的铃声文件 ;推送的时候在apninfo中的setsound中设置通知铃声为包含后缀名的的完整文件名,如:ring.mp3。

2.2 服务端实现

开发者可通过调用 个推服务端 api 或者登陆 个推开发者中心 从页面下发消息。针对这两种消息下发方式,开发者都可以通过简单配置,自定义消息下发时的通知栏铃声。

2.2.1 服务端 api 设置

由于默认的厂商策略是:在成功集成多厂商的前提下且 app 在线(即 app 在前台打开运行)时,下发 push_message 内的消息;app 离线( app 在后台、锁屏、进程关闭)时,下发 push_channel 内的消息。因此开发者在调用个推服务端 api 下发消息时,需要同时在 push_message 和 push_channel 内指定该铃声,

配置代码如下:

{
    "request_id": "请填写 10 到 32 位的 id",
    "settings": {
        "ttl": 3600000
    },
    "push_message": {
        //个推在线通知仅支持android,ios在线请使用透传消息
        "notification": {
            "title": "个推在线通知标题",
            "body": "个推在线通知内容",
            "click_type": "url",
            "url": "https://www.getui.com/",
            //从个推通道下发通知消息时的铃声文件名,此处不用填文件格式后缀名
            "ring_name": "ringing",
            //若有多个铃声文件,建议配套通知渠道使用,每个铃声指定不同的渠道id
            "channel_id": "请填写自定义渠道id",
            "channel_name": "请填写自定义渠道名",
            "channel_level": 4
        }
    },
    "push_channel": {
        "android": {
            "ups": {
                "notification": {
                    "title": "厂商离线通知标题",
                    "body": "厂商离线通知内容",
                    "click_type": "url",
                    "url": "https://www.getui.com/"
                },
                //options内为华为、小米的离线通知铃声设置(华为服务与通讯、小米私信类消息才支持自定义铃声)
                "options": {
                    "HW": {
                        "/message/android/notification/default_sound": false,
                        "/message/android/notification/channel_id": "RingRing4",
                        "/message/android/notification/sound": "/raw/ringing",
                        "/message/android/category": "填写华为侧的"服务与通讯"category取值",
                    },
                    "XM": {
                        "/extra.sound_uri": "小米后台申请的自定义sound_url地址",
                        "/extra.channel_id": "小米后台申请的"私信"通知类别id"
                    }
                }
            }
        },
        "ios": {
            "type": "notify",
            "aps": {
                "alert": {
                    "title": "ios离线通知标题",
                    "body": "ios离线通知内容"
                },
                "content-available": 0,
                //sound字段为ios通知铃声文件名(包含格式后缀名)。
                "sound": "ringing.mp3",
                "category": "ACTIONABLE"
            },
            "auto_badge": "+1"
        }
    }
}

注意事项

  1. 在使用自定义铃声前,必须完成个推消息推送 SDK 和个推消息推送多厂商版本 SDK 的集成,建议使用:个推官网最新版SDK
  2. options 内相关参数的生成,可参考个推文档中心:【华为】离线自定义铃声【小米】离线自定义铃声
  3. 目通过以上方式实现后,app 在线时:ios、android 都支持自定义铃声;app 离线时:ios 完全支持、android 暂时只有小米、华为机型支持自定义铃声。其它安卓机型,等待对应厂商平台开放相关功能后会进行适配。
  4. Android 12 由于系统限制,不支持在线自定义铃声。
  5. 华为自定义渠道功能,不再适用于数据处理位置为中国区的应用,所以这类应用无法自定义铃声

2.2.2 个推开发者中心设置

1、 登陆 个推开发者中心,进入个推消息推送 dos 页面,点击【创建推送】后在 Android 配置模块中选择【通知渠道模板】。一般默认为响铃、震动、唤醒屏幕。

2、通过设置通知渠道模板,来设置通知的提醒方式。可以自主选择响铃、震动、浮动、唤醒屏幕等多种方式对用户进行消息弱提醒、强提醒。如果是重要的消息内容,还可以针对通知栏铃声进行自定义设置,提醒特定用户群体及时关注消息;如果没有进行自定义设置,则通知栏铃声则默认为系统声音。

3、自定义铃声设置:在渠道模板【提醒方式】中选择通知铃声,输入自定义文件名。

自定义铃声1

开发者中心 SDK 下载

文档中心搜索

技术
咨询

微信扫一扫

随时联系技术支持

在线
咨询