Flutter

配置消息的推送属性

更新时间: 2024/03/07 13:18:45

云信 NIM SDK 支持配置消息的推送相关属性。

功能介绍

发送方可在发送消息/自定义系统通知时配置消息体(NIMMessage)的推送属性,包括消息是否需要离线推送、推送文案、推送标题等。

当收到离线推送后,接收方可以设置通知栏的跳转,即点击通知栏后,就进入指定的聊天界面。

具体的属性说明,参见文末的推送属性列表

设置消息需要推送

发送方可以通过消息体中的是否需要推送参数(NIMMessage - NIMCustomMessageConfig - enablePush),来设置该消息是否需要离线推送。

enablePush 默认为 true,即默认需要推送,如不需要,可修改为 false,即该消息不会触发推送。

示例代码如下:

message.config = NIMCustomMessageConfig(enablePush: true);
    return NimCore.instance.messageService
        .sendMessage(message: message, resend: false);

设置推送文案

云信支持设置消息的推送文案。

消息推送文案使用优先级如下:

  • 如果消息接收方设置的推送文案显示属性为“显示详情”(enablePushShowDetail= true),那么优先显示接收到的消息的推送文案(消息体中的 pushContent 字段内容),若发送方在发送消息时未设置该消息的推送文案,则显示云信消息的内置文案(根据消息类型不同,内置文案不同,如文本消息类型对应的文案为“发来了一条消息”)。
  • 如果消息接收方设置的的推送文案显示属性为“不显示详情”(enablePushShowDetail= false),那么优先显示提前设置好的自定义的推送文案(自定义推送文案功能需要单独开通,并且自定义的推送文案需要提前在控制台中添加。具体操作请参见下文的使用不显示详情的自定义推送文案),若未设置,则使用默认的推送文案是:“你收到一条新消息”。

设置消息体的推送文案

发送方可以通过设置消息体中的 pushContent 参数来设置该消息的推送文案,如果不设置,则使用云信内置文案。

发送设置好推送文案的消息后,接收方登录后会收到一条推送消息,内容形式为"昵称:"+"推送文案"。其中,昵称为推送文案前缀(默认需要前缀),具体请参见下文的设置推送文案前缀

示例代码如下:

message.pushContent = 'You have a new Message';
    return NimCore.instance.messageService
        .sendMessage(message: message, resend: false);

设置消息的推送文案前缀

通过消息体中的是否需要推送前缀参数(NIMCustomMessageConfig.enablePushNick),来设置该消息是否需要推送文案前缀,云信服务器向第三方推送服务端请求推送时,前缀为用户昵称。

enablePushNick 默认为 true,即默认需要推送文案前缀,如不需要,可修改为 flase。

示例代码如下:

 message.config = NIMCustomMessageConfig(enablePush: true,enablePushNick: true);
    return NimCore.instance.messageService
        .sendMessage(message: message, resend: false);

使用不显示详情的自定义推送文案

如果消息接收方将推送文案属性设置为不显示详情enablePushShowDetail= false),如果没有单独配置自定义的推送文案,那么将使用云信内置的默认推送文案:“你收到一条新消息”。

若根据您的业务需求,需要在使用自定义的推送文案,可以通过以下步骤实现。

  1. 在云信控制台开通自定义推送文案功能,并在控制台添加自定义推送文案(功能配置 > 自定义推送文案 > 添加推送文案)。

    控制台推送文案.png

    最多可以配置 100 种自定义推送文案,每种自定义文案用一个自定义类型来标识。

  2. 在初始化时,通过配置 NIMAndroidSDKOptions.customPushContentType 来设置自定义的推送文案类型(对应控制台中的自定义类型)。

        /// 自定义客户端类型,小于等于0视为没有自定义类型
        final int? customClientType;
    
  3. 将推送文案属性设置为不显示详情。示例代码如下:

    NimCore.instance.settingsService.enablePushShowDetail(false);
    

设置推送标题

目前云信发起的推送支持以下两种方式来设置推送标题:

  • 发送方通过消息体的推送自定义字段 NIMMessage.pushPayload 来配置 "pushTitle":"标题内容",则以此显示,优先级最高。
  • 如果没有配置,则使用云信默认的推送标题:点对点消息(P2P)推送标题默认为用户昵称(如果没有设置用户昵称,则点对点消息推送标题默认为新消息),群消息推送标题默认为群名称

示例代码如下:

 message.pushPayload = {"pushTitle":"标题内容"};
    return NimCore.instance.messageService
        .sendMessage(message: message, resend: resend);

覆盖通知栏内容

安卓支持推送消息覆盖(除 vivo),即后一条推送内容覆盖前面推送内容。可以前往 云信控制台-选择对应的应用-功能配置(IM 专业版)-消息撤回配置-撤回消息是否覆盖原始消息推送 进行设置。

控制台功能配置.png

消息撤回设置.png

以撤回消息的场景为例:

用户 A 发消息给用户 B,产生第三方推送,文案内容为“你好”。然后用户 A 撤回了此条消息,此时通知栏中的“你好”变为预设的“对方撤回了一条消息”。

消息体推送属性列表

参数 类型 说明
pushContent String String 自定义推送文案,最大长度 200 字节,撤回消息时该字段无效
pushPayload Map< String, Object > 第三方自定义的推送属性,可以通过该字段自定义消息推送 Payload,支持字段参考第三方推送技术文档,最大长度 2048 字符,撤回消息时该字段无效
memberPushOption NIMMemberPushOption 指定成员推送选项,包括是否强制推送,指定需要特殊推送的用户
通过该选项进行一些更复杂的推送设定,目前只能在群会话中使用
forcePushContent :推送文案;isForcePush:是否强制推送;forcePushList:需要强制推送的用户列表
config NIMCustomMessageConfig 消息配置项
其中 enablePush 表示消息是否需要推送;enablePushNick 表示推送是否需要带前缀(一般为昵称)
此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 设置消息需要推送
  • 设置推送文案
  • 设置消息体的推送文案
  • 使用不显示详情的自定义推送文案
  • 设置推送标题
  • 覆盖通知栏内容
  • 消息体推送属性列表