极简推送

对一个推送 ID 推送一条消息。

在调用本接口之前,您需要引入依赖,详见 SDK 准备

请求参数

参数名称

类型

是否必填

示例

描述

classification

String

1

用于传递 vivo 推送通道的消息类型:

  • 0 - 运营类消息

  • 1 - 系统类消息

不填则默认为 1。

taskName

String

simpleTest

推送任务名称。

title

String

测试

消息的标题。

content

String

测试

消息的正文。

appId

String

ONEX570DA89211721

mPaaS App ID

workspaceId

String

test

mPaaS 工作空间

deliveryType

Long

3

目标 ID 类型,数值选择如下:

  • 1 - Android 设备维度

  • 2 - iOS 设备维度

  • 3 - 用户维度

  • 5 - 实时活动 pushToken

  • 6 - 实时活动 activityId

  • 7 - HarmonyOS 设备维度

targetMsgkey

String

{“user1024”:”1578807462788”}

推送目标,为 Map 形式:

  • key:为目标,配合 deliveryType

    • 如果 deliveryType 为 1 ,则 key 为 Android 设备 ID。

    • 如果 deliveryType 为 2,则 key 为 iOS 设备 ID。

    • 如果 deliveryType 为 3 ,则 key 为用户 ID,即用户调用绑定接口时传入的 userid 值。

    • 如果 deliveryType 为 7,则 key 为鸿蒙设备 ID。

  • value:消息业务 ID,用户自定义,必须保持唯一。

说明

推送目标不可以超过 10 个,即 targetMsgkey 参数最多可传入 10 个键值对。

expiredSeconds

Long

300

消息有效期,单位为秒。

pushStyle

Integer

0

推送样式:

  • 0 - 默认

  • 1 - 大文本

  • 2 - 图文消息

extendedParams

String

{“key1”:”value1”}

扩展参数,为 Map 形式。

pushAction

Long

0

单击消息后的跳转方式:

  • 0 - Web URL

  • 1 - Intent Activity

默认为 Web URL。

uri

String

http://www

单击消息后的跳转地址。

silent

Long

1

是否静默:

  • 1 - 静默

  • 0 - 非静默

notifyType

String

表示消息通道类型:

  • transparent - MPS 自建通道

  • notify - 默认通道

imageUrls

String

{\”defaultUrl\”:\”https://mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"oppoUrl\":\"https://mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"miuiUrl\":\"https://mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"fcmUrl\":\"https://mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"iosUrl\":\"https://mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\"}

大图链接(JSON 字符串),支持 OPPO、HMS、MIUI、FCM 和 iOS 推送通道,也可以使用 defaultUrl 作为默认值。

iconUrls

String

{\”defaultUrl\”:\”https://mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"hmsUrl\":\"https://mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"oppoUrl\":\"https://mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"miuiUrl\":\"https://mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\"}

图标链接(JSON 字符串),支持 OPPO、HMS、MIUI、FCM 和 iOS 推送通道,也可以使用 defaultUrl 作为默认值。

strategyType

Integer

1

推送策略类型:

  • 0 - 立即

  • 1 - 定时

  • 2 - 循环

不填则默认为 0。

StrategyContent

String

{\”fixedTime\”:1630303126000,\”startTime\”:1625673600000,\”endTime\”:1630303126000,\”circleType\”:1,\”circleValue\”:[1, 7],\”time\”:\”13:45:11\”}

推送策略详情(JSON 字符串)。strategyType 不等于 0 时必填。具体参数详见下方的 StrategyContent 字段说明

transparentMessagePayload

Map<String, JSONObject>

-

厂商透传消息体。

  • 键 key:厂商渠道类型

    • 华为通道为 hms

    • 荣耀通道为 honor

    • 谷歌 firebase 通道为 fcm

    • 鸿蒙通道为 harmonyos

  • value:透传消息体。推送给厂商的透传消息体使用该 value 值

透传消息体的格式如下:

{
    "data": "{\"name\":\"123hms\"}",
    "android":
    {
        "category": "VOIP",
        "ttl": "600s",
        "urgency": "HIGH"
    },
    "token":
    [
        "9912981981wqdq2112291fcm001saa222222222ggwerfwgsas2cc3"
    ]
}

transparentMessageUrgency

String

-

厂商透传消息优先级(transparentMessagePayload 有值时有效)。

目前仅华为、荣耀以及鸿蒙支持,有 HIGH/NORMAL 可选。

针对华为、荣耀而言:

  • HIGH:表示高优先透传

  • NORMAL:或者不传参表示普通透传

针对鸿蒙而言:

  • HIGH:当前消息是透传消息

  • NORMAL:当前消息是后台消息

smsStrategy

int

2

短信策略:

  • 0 - 无(默认)

  • 1 - 补发

  • 2 - 并发

smsSignName

String

mPaaS 测试

短信签名

smsTemplateCode

String

SMS_216070269

短信模板 ID

smsTemplateParam

String

{\"code\": 123456}

短信模板变量对应的实际值,JSON 格式。

thirdChannelCategory

Map

thirdChannelCategory: {

"hms": "9", //华为 FINANCE 财务类型消息

"vivo": "1"

//vivo IM 类型消息

}

用于传递厂商消息分类,详情请参见 厂商消息分类

notifyLevel

Map

notifyLevel: {"oppo":"2"//OPPO通知栏+锁屏}

厂商消息提醒等级,如 OPPO 消息等级如下所示:

  • 1 - 通知栏

  • 2 - 通知栏+锁屏

  • 3 - 通知栏+锁屏+横幅+震动+铃声

miChannelId

String

"123321"

小米厂商推送渠道的 channelId

activityEvent

String

实时活动事件,可选 update/end:

  • update - 更新事件

  • end - 结束事件

activityContentState

JSONObject

实时活动消息的 content-state,需和客户端定义的参数保持一致。

dismissalDate

long

实时活动消息过期时间(秒级时间戳),可选字段,不传则按 iOS 系统默认失效时间 12h。

说明

关于 smsStrategy 参数:

  • 如果 smsStrategy 的值不为 0,则 smsSignNamesmsTemplateCodesmsTemplateParam 必填。

关于 activityEvent 参数:

  • activityEvent 为 end 事件时,dismissalDate 配置的过期时间才会生效。

  • activityEvent 为 update 事件时,dismissalDate 配置的过期时间不会生效。

  • 若传送 end 事件但不传送 dismissalDate,iOS 系统默认 4 小时后结束实时活动。

StrategyContent 字段说明

JSON 格式转化为 String 传值。

参数名称

类型

是否必填

示例

描述

fixedTime

long

1630303126000

定时推送时间戳(单位:毫秒,精确到秒)。推送策略类型为定时(strategyType 值为 1)时,fixedTime 必填。

startTime

long

1640966400000

循环周期开始时间戳(单位:毫秒,精确到天)。推送策略类型为循环(strategyType 值为 2)时,startTime 必填。

endTime

long

1672416000000

循环周期结束时间戳(单位:毫秒,精确到天),循环结束时间不得超过当天后的 180 天。推送策略类型为循环(strategyType 值为 2)时,endTime 必填。

circleType

int

3

循环类型:

  • 1 - 每天

  • 2 - 每周

  • 3 - 每月

推送策略类型为循环(strategyType 值为 2)时,circleType 必填。

circleValue

int[]

[1,3]

循环值:

  • 若循环类型为每天:空

  • 若循环类型为每周:设置每周循环的时间,例如 [1,3] 表示每周 1 和周 3。

  • 若循环类型为每月:设置每月循环推送的时间,例如 [1,3] 表示每月 1 号和 3 号。

推送策略类型为循环(strategyType 值为 2)且循环类型(circleType)非每天时,circleValue 必填。

time

String

09:45:11

循环推送时间(时分秒,格式为 HH:mm:ss) 。推送策略类型为循环(strategyType 值为 2)时,time 必填。

说明
  • 未执行的定时或循环推送任务总数上限默认为 100 条。

  • 循环周期为开始时间的 0 点到结束时间的 24 点。

  • 循环开始时间和结束时间均不可早于当天 0 点,且结束时间不得早于开始时间。

返回参数

参数名称

类型

示例

描述

RequestId

String

B589F4F4-CD68-3CE5-BDA0-6597F33E23916512

请求 ID

ResultCode

String

OK

请求结果码

ResultMessage

String

param is invalid

请求错误描述

PushResult

JSON

请求结果

Success

boolean

true

请求状态。Success 参数值包含在 PushRresult JSON 字符串中。

ResultMsg

String

param is invalid

请求错误内容。ResultMsg 参数值包含在 PushRresult JSON 字符串中。

Data

String

903bf653c1b5442b9ba07684767bf9c2

定时推送任务 ID。strategyType 不等于 0 时,该字段不为空。

代码示例

请确保您的 AccessKey 拥有 AliyunMPAASFullAccess 权限,详情请参考 对 RAM 账号进行应用级别的访问控制

Java 代码示例

单击此处 查看下方代码示例中 AccessKeyId 与 AccessKeySecret 的获取方式 。

 DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
        // 创建 DefaultAcsClient 实例并初始化
        // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        // 本示例以将AccessKey ID和AccessKey Secret保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里。
        // 建议先完成环境变量配置
        String accessKeyId = System.getenv("MPAAS_AK_ENV");
        String accessKeySecret = System.getenv("MPAAS_SK_ENV");
        DefaultProfile profile = DefaultProfile.getProfile(
            "cn-hangzhou",          // 地域 ID
            accessKeyId,      
            accessKeySecret); 

        IAcsClient client = new DefaultAcsClient(profile);
        // Create an API request and set parameters
        PushSimpleRequest request = new PushSimpleRequest();
        request.setAppId("ONEX570DA89211721");
        request.setWorkspaceId("test");
        request.setTaskName("测试任务");
        request.setTitle("测试");
        request.setContent("测试");
        request.setDeliveryType(3L);
        Map<String,String> extendedParam = new HashMap<String, String>();
        extendedParam.put("key1","value1");
        request.setExtendedParams(JSON.toJSONString(extendedParam));
        request.setExpiredSeconds(300L);

        request.setPushStyle(2);
        String imageUrls = "{\"defaultUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"oppoUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"miuiUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"fcmUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"iosUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\"}";
        String iconUrls = "{\"defaultUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"hmsUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"oppoUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"miuiUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\"}";
        request.setImageUrls(imageUrls);
        request.setIconUrls(iconUrls);

        request.setStrategyType(2);
        request.setStrategyContent("{\"fixedTime\":1630303126000,\"startTime\":1625673600000,\"endTime\":1630303126000,\"circleType\":1,\"circleValue\":[1, 7],\"time\":\"13:45:11\"}");

        Map<String,String> target = new HashMap<String, String>();
        String msgKey = String.valueOf(System.currentTimeMillis());
        target.put("user1024",msgKey);
        request.setTargetMsgkey(JSON.toJSONString(target));
        // Initiate the request and handle the response or exceptions
        PushSimpleResponse response;
        try {
            response = client.getAcsResponse(request);
            System.out.println(response.getResultCode());
            System.out.println(response.getResultMessage());
        } catch (ClientException e) {
            e.printStackTrace();
        }

Python 代码示例

from aliyunsdkcore.client import AcsClient
from aliyunsdkmpaas.request.v20190821 import PushSimpleRequest
import json

        // 阿里云账号 AccessKey 拥有所有 API 的访问权限,风险很高。强烈建议您创建并使用 RAM 用户进行 API 访问或日常运维,请登录 RAM 控制台创建 RAM 用户
        // 此处以把 AccessKey 和 AccessKeySecret 保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里
        // 强烈建议不要把 AccessKey 和 AccessKeySecret 保存到代码里,会存在密钥泄漏风险
        // 建议先完成环境变量配置
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
# Initialize AcsClient instance
client = AcsClient(
"cn-hangzhou",
accessKeyId,      
accessKeySecret 
);

# Initialize a request and set parameters
request = PushSimpleRequest.PushSimpleRequest()
request.set_endpoint("mpaas.cn-hangzhou.aliyuncs.com")
request.set_AppId("ONEX570DA89211721")
request.set_WorkspaceId("test")
request.set_Title( "python测试")
request.set_Content( "测试2")
request.set_DeliveryType(3)
request.set_TaskName("python测试任务")
request.set_ExpiredSeconds(600)
target = {"user1024":str(time.time())}
request.set_TargetMsgkey(json.dumps(target))

# Print response
response = client.do_action_with_exception(request)
print response

Node.js 代码示例

const sdk = require('@alicloud/mpaas20190821');

const { default: Client, PushSimpleRequest } = sdk;
// 创建客户端
// 阿里云账号 AccessKey 拥有所有 API 的访问权限,风险很高。强烈建议您创建并使用 RAM 用户进行 API 访问或日常运维,请登录 RAM 控制台创建 RAM 用户
// 此处以把 AccessKey 和 AccessKeySecret 保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里
// 强烈建议不要把 AccessKey 和 AccessKeySecret 保存到代码里,会存在密钥泄漏风险
// 建议先完成环境变量配置
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
const client = new Client({
  accessKeyId,      
  accessKeySecret, 
  endpoint: 'mpaas.cn-hangzhou.aliyuncs.com',
  apiVersion: '2019-08-21'
});
// 初始化 request
  const request = new PushSimpleRequest();
  request.appId = "ONEX570DA89211721";
  request.workspaceId = "test";
  request.title = "Node测试";
  request.content = "测试";
  request.deliveryType = 3;
  request.taskName = "Node测试任务";
  request.expiredSeconds=600;
  const extendedParam = {
    test: '自定义扩展参数'
  };
  request.extendedParams = JSON.stringify(extendedParam);
// value 为业务方消息id,请保持唯一
  const target = {
    "userid1024": String(new Date().valueOf())
  };
  request.targetMsgkey = JSON.stringify(target);

// 调用 API
try {
  client.pushSimple(request).then(res => {
    console.log('SUCCESS', res);
  }).catch(e => {
    console.log('FAIL', e);
  });
} catch(e) {
  console.log('ERROR', e);
}

PHP 代码示例

<?php

use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\MPaaS\MPaaS;
AlibabaCloud::accessKeyClient('accessKeyId', 'accessKeySecret')
    ->regionId('cn-hangzhou')
    ->asDefaultClient();

class Demo {
    public function run() {
        try {
               $this->simplePush();
        } catch (\Exception $e) {
        }
    }


    public function simplePush() {
        $request = MPaaS::v20190821()->pushSimple();
        $result = $request->withAppId("ONEX570DA89211721")
            ->withWorkspaceId("test")
            ->withTitle("PHP 测试")
            ->withContent("测试3")
            ->withDeliveryType(3)
            ->withTaskName("PHP 测试任务")
            ->withExpiredSeconds(600)
            ->withTargetMsgkey(
                json_encode(["userid1024" => "".time() ]
            ))
            // endpoint
            ->host("mpaas.cn-hangzhou.aliyuncs.com")
            // 是否开启 debug 模式
            ->debug(true)
            ->request();
    }
}