开发者社区 问答 正文

消息服务如何移动推送?



简介


MNS消息服务的Topic目前已经支持移动推送,用户发送到Topic里面的Message可以同时被阿里云的移动推送服务推送到移动端。

Endpoint格式


push:{APP_KEY},其中{APP_KEY}是移动端的App在阿里云的移动推送服务的注册ID

前置条件


只需要先开通阿里云的移动推送服务即可,具体开通方式请参考下面文档。

配置移动推送服务


  1. 创建App:在移动推送控制台(https://push.console.aliyun.com/ )的App列表页,点击页面右上角的“创建APP”按钮即可创建一个新的App。

  2. 配置App:App创建成功后,强烈建议您去配置app。在APP详情页点击配置应用。
    • Android配置: 勾选Android,并填入PackageName,包名需要与您的代码中的applicationID保持一致。请务必确保您创建的不同应用具有不同的PackageName,阿里云移动推送Android SDK以PackageName作为路由依据,不同应用配置相同包名,可能导致消息错误发送,即与目标应用有相同包名的应用接收到推送消息。
    • iOS配置: 勾选iOS,上传证书并填写证书对应的密码,注意 开发证书和生产证书 不要弄混淆,关于证书的获取与配置,请参见 iOS 推送证书设置指南

  • 在APP列表点击应用证书按钮即可查看该应用的Appkey和Secret。

  • 在APP列表页下载App端需要集成的SDK

  • 配置SDK

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


  • MNS控制台体验流程



    创建移动推送订阅

    1. 在MNS控制台创建Topic
    2. 进入Topic的”订阅详情”
    3. 创建订阅


    发送消息 (PublishMessage)

    1. 进入Topic列表页面
    2. 向Topic发送消息
    3. 配置移动推送消息的相关属性移动推送的具体属性可以参考 这里


    JavaSDK订阅代码示例



    展开
    收起
    轩墨 2017-10-24 11:40:34 2774 分享 版权
    阿里云 AI 助理回答

    阿里云的消息服务(MNS)与移动推送服务的集成,为开发者提供了一种便捷的方式,将消息直接从后端系统推送到移动端用户。以下是基于您提供的信息,如何配置和使用这一功能的简要指南:

    开通与配置移动推送服务

    1. 开通服务:首先,在阿里云官网上开通移动推送服务。具体步骤可参考移动推送官方文档。

    2. 创建App

      • 登录移动推送控制台。
      • 点击“创建APP”按钮,填写相关信息完成创建。这会生成一个唯一的APP_KEY,用于后续配置。
    3. 配置App详情

      • 对于Android应用,确保在控制台填写正确的PackageName,并与您的应用代码中的applicationID一致。
      • 对于iOS应用,上传对应的开发或生产证书,并正确填写密码。注意区分环境,避免证书错误导致推送失败。
    4. 获取AppKey和Secret

      • 在APP列表中,点击相应应用查看其AppKeySecret,这些是与MNS服务集成时需要的关键信息。
    5. 集成SDK

      • 根据所选平台(iOS或Android),下载并按照快速入门指南, Android: Android SDK QuickStart)集成SDK到您的应用中。
    6. 安装测试应用:将集成好SDK的应用安装到终端设备上,准备接收推送消息。

    MNS控制台操作

    1. 创建Topic:登录阿里云MNS控制台,创建一个新的Topic,用于发布消息。

    2. 创建移动推送订阅

      • 进入刚创建的Topic的“订阅详情”页面。
      • 创建新的订阅,Endpoint格式应为push:{APP_KEY},其中{APP_KEY}替换为之前获取的App Key。
    3. 发送消息(PublishMessage)

      • 回到Topic列表页,向该Topic发送一条消息。
      • 配置消息内容时,根据需求设置移动推送相关的属性,如标题、内容等。具体属性参考MNS移动推送消息属性文档。

    Java SDK 订阅代码示例

    以下是一个简单的Java SDK示例,展示如何通过代码订阅MNS Topic以接收消息。请注意,此示例不直接涉及移动推送的订阅逻辑,而是展示了基本的MNS Topic订阅流程。

    import com.aliyun.mns.client.CloudQueue;
    import com.aliyun.mns.client.MNSClient;
    import com.aliyun.mns.common.auth.Credentials;
    import com.aliyun.mns.common.utils.ServiceUtils;
    import com.aliyun.mns.model.MNSException;
    import com.aliyun.mns.model.Subscription;
    import com.aliyun.mns.model.Topic;
    
    public class MNSTopicSubscribeExample {
        public static void main(String[] args) {
            // 初始化MNSClient
            String endpoint = "http://mns.{region}.aliyuncs.com";
            String accessKeyId = "{YourAccessKeyId}";
            String accessKeySecret = "{YourAccessKeySecret}";
            Credentials credentials = new Credentials(accessKeyId, accessKeySecret);
            MNSClient client = new MNSClient(endpoint, credentials);
    
            // 创建Topic
            String topicName = "MyTopic";
            Topic topic = null;
            try {
                topic = client.createTopic(topicName);
            } catch (MNSException e) {
                if (!"TopicAlreadyExist".equals(e.getErrorCode())) {
                    throw e; // 如果不是因为主题已存在,则抛出异常
                }
                topic = client.getTopicRef(topicName);
            }
    
            // 创建Subscription
            String subscriptionName = "MySubscription";
            Subscription subscription = new Subscription(subscriptionName, "push:{YourAppKey}");
            subscription.setNotifyContentFormat(Subscription.NotifyContentFormat.SIMPLIFIED);
            subscription.setNotifyStrategy(Subscription.NotifyStrategy.EXPONENTIAL_DECAY_RETRY);
            try {
                topic.subscribe(subscription);
            } catch (MNSException e) {
                ServiceUtils.throwExceptionIfNeed(e);
            }
    
            // ...其他逻辑,如消息发送和接收...
    
            // 关闭客户端连接
            client.close();
        }
    }
    

    请记得替换{region}, {YourAccessKeyId}, {YourAccessKeySecret}, 和{YourAppKey}为实际的值。这个例子仅展示了如何通过Java SDK创建Topic和Subscription,实际上对于移动推送场景,重点在于配置Endpoint为push:{APP_KEY}以及在移动设备上处理接收到的推送消息。

    有帮助
    无帮助
    AI 助理回答生成答案可能存在不准确,仅供参考
    0 条回答
    写回答
    取消 提交回答