消息服务支持移动推送

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 1个月
简介: MNS消息服务 MNS消息服务在功能上可以大致分为队列和主题两大块,其中队列功能是提供一对一的传统消息队列中间件服务,主题功能是提供一对多的的广播消息服务。 多样的推送方式 MNS的主题功能可以支持将一条消息以多种方式广播到用户的终端。

MNS消息服务

MNS消息服务在功能上可以大致分为队列和主题两大块,其中队列功能是提供一对一的传统消息队列中间件服务,主题功能是提供一对多的的广播消息服务。

多样的推送方式

MNS的主题功能可以支持将一条消息以多种方式广播到用户的终端。MNS的主题功能不仅支持广播到用户的HttpServer,也支持推送到用户的MNS队列里,还支持通过短信、邮件的方式做推送。现在,主题功能也支持通过移动推送直接将消息广播到用户的App终端。

未来我们也会根据广播推送的场景做更多的有机结合:比如用户可以在一条消息里同时指定推送App和推送短信分别的展示内容,然后在推送App不可达时改为推送短信;再比如比较常见的监控报警场景,一条报警消息可以被通过多种途径发出去等。

移动推送的具体使用

MNS的主题功能对移动推送的支持,是通过阿里云的RAM授权使用了阿里云的移动推送这个产品,所以用户需要先开通“移动推送”。

开通移动推送

  1. 创建App:在移动推送控制台(https://push.console.aliyun.com/ )的App列表页,点击页面右上角的“创建APP”按钮即可创建一个新的App。
    CreateApp
  2. 配置App:App创建成功后,强烈建议您去配置app。在APP详情页点击配置应用。

    • Android配置: 勾选Android,并填入PackageName,包名需要与您的代码中的applicationID保持一致。请务必确保您创建的不同应用具有不同的PackageName,阿里云移动推送Android SDK以PackageName作为路由依据,不同应用配置相同包名,可能导致消息错误发送,即与目标应用有相同包名的应用接收到推送消息。
    • iOS配置: 勾选iOS,上传证书并填写证书对应的密码,注意 开发证书和生产证书 不要弄混淆,关于证书的获取与配置,请参见 iOS 推送证书设置指南
      ConfigApp
  3. 在APP列表点击应用证书按钮即可查看该应用的Appkey和Secret。
    CheckKey
  4. 在APP列表页下载App端需要集成的SDK
    DownloadSDK
  5. 配置SDK

  6. 安装配置好的App到终端手机

MNS控制台体验流程

创建移动推送订阅
  1. 在MNS控制台创建Topic
  2. 进入Topic的"订阅详情"

  1. 创建订阅
    CreateSub

发送消息 (PublishMessage)
  1. 进入Topic列表页面
  2. 向Topic发送消息
  3. 配置移动推送消息的相关属性
    PublishPush

移动推送的具体属性可以参考 这里
ConfigPush

Java代码示例

MNS的JavaSDK在这里

try {
        String topicName = TOPICNAME;
        TopicMeta meta = new TopicMeta();
        meta.setTopicName(topicName);

        CloudTopic topic = client.createTopic(meta);
        String pushEndpoint = topic.generatePushEndpoint("XXXX");

        SubscriptionMeta subMeta = new SubscriptionMeta();
        subMeta.setSubscriptionName(SUBNAME);
        subMeta.setNotifyStrategy(SubscriptionMeta.NotifyStrategy.EXPONENTIAL_DECAY_RETRY);
        subMeta.setEndpoint(pushEndpoint);
        topic.subscribe(subMeta);

        RawTopicMessage msg = new RawTopicMessage();
        msg.setMessageBody("hello topic");

        MessageAttributes messageAttributes = new MessageAttributes();
        PushAttributes pushAttributes = new PushAttributes();
        pushAttributes.setTarget(PushAttributes.PushTarget.ALL);
        pushAttributes.setTargetValue("ALL");
        pushAttributes.setDeviceType(PushAttributes.PushDeviceType.ALL);
        pushAttributes.setTitle("JavaSDK");
        pushAttributes.setBody("Hello From JavaSDK");
        pushAttributes.setPushType(PushAttributes.PushType.MESSAGE);
        pushAttributes.setParam("AndroidOpenType", "APPLICATION");
        messageAttributes.setPushAttributes(pushAttributes);

        topic.publishMessage(msg, messageAttributes);
} catch (ServiceException se) {
        System.out.println(se.getErrorCode() + se.getRequestId());
        System.out.println(se.getMessage());
        se.printStackTrace();
} catch (Exception e) {
        e.printStackTrace();
} 

如果您在使用过程中遇到了什么问题,或者有什么想法愿意一起交流,请站内信或者工单联系我们~

相关实践学习
通过轻量消息队列(原MNS)主题HTTP订阅+ARMS实现自定义数据多渠道告警
本场景将自定义告警信息同时分发至多个通知渠道的需求,例如短信、电子邮件及钉钉群组等。通过采用轻量消息队列(原 MNS)的主题模型的HTTP订阅方式,并结合应用实时监控服务提供的自定义集成能力,使得您能够以简便的配置方式实现上述多渠道同步通知的功能。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
安全 算法 编译器
【C++ 泛型编程 入门篇】 C++ 模板元编程之枚举内嵌 实战教程
【C++ 泛型编程 入门篇】 C++ 模板元编程之枚举内嵌 实战教程
415 0
|
Oracle 关系型数据库 数据库
Oracle查询优化-复制表的定义及数据
【1月更文挑战第5天】【1月更文挑战第14篇】在Oracle数据库中,复制表定义和复制表数据是两个常见的操作。
436 1
|
前端开发 JavaScript
Webpack 常用 Loader 和 Plugin
【10月更文挑战第12天】Webpack 是一个强大的模块打包工具,能够将各种资源模块进行打包和处理。Loader 用于转换模块的源代码,如 `babel-loader` 将 ES6+ 代码转换为 ES5,`css-loader` 处理 CSS 文件等。Plugin 扩展 Webpack 功能,如 `HtmlWebpackPlugin` 自动生成 HTML 文件,`UglifyJsPlugin` 压缩 JavaScript 代码。通过合理配置和使用 Loader 和 Plugin,可以构建高效、优化的项目。
485 58
|
存储 NoSQL Linux
深入理解Linux内核task_struct结构
深入理解Linux内核task_struct结构
|
SQL 关系型数据库 MySQL
qt登录界面简单制作,是真的保姆级别了!!!
qt登录界面简单制作,是真的保姆级别了!!!
|
Dart 前端开发 开发者
【Flutter前端技术开发专栏】Flutter Dart语言基础语法解析
【4月更文挑战第30天】Dart是Google为Flutter框架打造的高效编程语言,具有易学性、接口、混入、抽象类等特性。本文概述了Dart的基础语法,包括静态类型(如int、String)、控制流程(条件、循环)、函数、面向对象(类与对象)和异常处理。此外,还介绍了库导入与模块使用,帮助开发者快速入门Flutter开发。通过学习Dart,开发者能创建高性能的应用。
431 0
【Flutter前端技术开发专栏】Flutter Dart语言基础语法解析
|
机器学习/深度学习 人工智能 自然语言处理
【LangChain系列】第五篇:大语言模型中的提示词,模型及输出简介及实践
【5月更文挑战第19天】LangChain是一个Python库,简化了与大型语言模型(LLM)如GPT-3.5-turbo的交互。通过ChatOpenAI类,开发者可以创建确定性输出的应用。提示词是指导LLM执行任务的关键,ChatPromptTemplate允许创建可重用的提示模板。输出解析器如StructuredOutputParser将模型的响应转化为结构化数据,便于应用处理。LangChain提供可重用性、一致性、可扩展性,并有一系列预建功能。它使得利用LLM构建复杂、直观的应用变得更加容易。
968 0
|
编解码 前端开发 JavaScript
【专栏】PostCSS 究竟有何魅力,为何说它真的太好用了呢?本文将深入探讨 PostCSS 的特点、优势以及在实际开发中的应用。
【4月更文挑战第29天】PostCSS是一个JavaScript工具,用于解析、转换和优化CSS代码,其亮点在于丰富的插件生态和高度定制化。它能自动添加浏览器前缀、压缩代码、格式化样式,支持自定义媒体查询和变量。通过无缝集成现有工作流程,PostCSS提升了开发效率和代码质量。未来,随着前端技术发展,PostCSS的插件生态将更加强大,持续为开发者带来便利。尝试PostCSS,发掘更多可能性!
359 0
|
安全 API 数据安全/隐私保护
Django与第三方服务的集成:支付、邮件等
【4月更文挑战第15天】本文介绍了Django集成支付服务和邮件服务的方法。对于支付服务,包括选择支付网关(如支付宝、微信支付、Stripe)、安装Django库、配置参数、创建支付视图及处理支付结果。而对于邮件服务,涉及配置邮件服务器、使用`django.core.mail`发送邮件,以及集成SendGrid等第三方服务以增强邮件功能。集成这些服务能丰富Django应用功能,同时要注意安全性与可靠性。

热门文章

最新文章