iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >友盟消息推送api、python sdk
  • 677
分享到

友盟消息推送api、python sdk

消息apisdk 2023-01-30 23:01:46 677人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

一,友盟消息推送python服务端sdk地址和文档地址   1.sdk地址:Http://dev.umeng.com/system/resources/W1siZiIsIjIwMTYvMDgvMTkvMTdfNDFfMzhfNzg2X3B

一,友盟消息推送python服务端sdk地址和文档地址

  1.sdk地址:Http://dev.umeng.com/system/resources/W1siZiIsIjIwMTYvMDgvMTkvMTdfNDFfMzhfNzg2X3B1c2hfc2VydmVyX3B5c2RrLnppcCJdXQ/push-server-pysdk.zip

  2.文档:http://dev.umeng.com/push/Android/api-doc

二、python官方sdk代码中的错误(没错!官方代码有错。)

  

三、推送类型

  sdk中有六中消息类型,分别为单播(unicast)、列播(listcast)、广播(broadcast)、组播(groupcast)、文件播(filecast)、自定义播(customizedcast)六中

  1.参数说明:

  • Appkey:应用唯一标识。友盟消息推送服务提供的appkey和友盟统计分析平台使用的同一套appkey。
  • App Master Secret:服务器秘钥,用于服务器端调用API请求时对发送内容做签名验证。
  • device_token: 友盟消息推送服务对设备的唯一标识。Android的device_token是44位字符串iOS的device_token是64位。
  • alias: 开发者自有账号,开发者可以在SDK中调用setAlias(alias, alias_type)接口将alias+alias_type与device_token做绑定,之后开发者就可以根据自有业务逻辑筛选出alias进行消息推送。
  • 单播(unicast): 向指定的设备发送消息。
  • 列播(listcast): 向指定的一批设备发送消息。
  • 广播(broadcast): 向安装该App的所有设备发送消息。
  • 组播(groupcast): 向满足特定条件的设备集合发送消息,例如: "特定版本"、"特定地域"等。
  • 文件播(filecast): 开发者将批量的device_token或者alias存放到文件,通过文件ID进行消息发送。
  • 自定义播(customizedcast): 开发者通过自有的alias进行推送,可以针对单个或者一批alias进行推送,也可以将alias存放到文件进行发送。
  • 通知-Android(notification): 消息送达到用户设备后,由友盟SDK接管处理并在通知栏上显示通知内容。
  • 消息-Android(message): 消息送达到用户设备后,消息内容透传给应用自身进行解析处理。
  • 通知-iOS: 和APNs定义一致。
  • 静默推送-iOS: 和APNs定义一致。
  • 测试模式: 在广播、组播等大规模发送消息的情况下,为了防止开发者误将测试消息大面积发给线上用户,特增加了测试模式。 测试模式下,只会将消息发送给测试设备。测试设备需要到网站上手工添加。
  • 测试模式-Android: Android的测试设备是正式设备的一个子集
  • 测试模式-iOS: iOS的测试模式对应APNs的开发环境(sandbox), 正式模式对应APNs的生产环境(prod),测试设备和正式设备完全隔离。
  • 签名: 为了保证调用API的请求是合法者发送且参数没有被篡改,需要在调用API时对发送的所有内容进行签名。签名附加在调用地址后面,签名的计算方式参见附录K。
  • 推送类型: 单播(unicast)、列播(listcast)、自定义播(customizedcast且不带file_id)统称为单播类型消息,WEB后台不会展示此类消息详细信息,仅展示前一天的汇总数据;广播(broadcast)、文件播(filecast)、组播(groupcast)、自定义播(customizedcast且file_id不为空)统称为任务类型消息,任务支持查询、撤销操作,Web后台会展示此类消息详细信息

 2.发送限制

  1. 广播(broadcast)默认每天可推送10次
  2. 组播(groupcast)默认每分钟可推送5次
  3. 文件播(filecast)默认每小时可推送300次
  4. 自定义播(customizedcast, 且file_id不为空)默认每小时可推送300次

  3.消息发送

   1.功能说明

    开发者通过此接口,可向 指定用户(单播)、 所有用户(广播) 或 满足特定条件的用户群(组播),发送 通知 或 消息。此外,该接口还支持开发者使用 自有的账号系统(alias) 来发送消息给指定的账号或者账号群。
    注意,iOS推送的相关协议,请严格按照APNs的协议来填写,友盟完全遵循APNs的协议

  2.调用地址

    http接口:http://msg.umeng.com/api/send?sign=mysign

    https接口:https://msgapi.umeng.com/api/send?sign=mysign

    请求方式:post

  3.调用参数

    安卓: 

{
  "appkey":"xx",    // 必填,应用唯一标识
  "timestamp":"xx", // 必填,时间戳,10位或者13位均可,时间戳有效期为10分钟
  "type":"xx",      // 必填,消息发送类型,其值可以为: 
                    //   unicast-单播
                    //   listcast-列播,要求不超过500个device_token
                    //   filecast-文件播,多个device_token可通过文件形式批量发送
                    //   broadcast-广播
                    //   groupcast-组播,按照filter筛选用户群, 请参照filter参数
                    //   customizedcast,通过alias进行推送,包括以下两种case:
                    //     - alias: 对单个或者多个alias进行推送
                    //     - file_id: 将alias存放到文件后,根据file_id来推送
  "device_tokens":"xx", // 当type=unicast时, 必填, 表示指定的单个设备
                        // 当type=listcast时, 必填, 要求不超过500个, 以英文逗号分隔
  "alias_type": "xx", // 当type=customizedcast时, 必填
                      // alias的类型, alias_type可由开发者自定义, 开发者在SDK中
                      // 调用setAlias(alias, alias_type)时所设置的alias_type
  "alias":"xx", // 当type=customizedcast时, 选填(此参数和file_id二选一)
                // 开发者填写自己的alias, 要求不超过500个alias, 多个alias以英文逗号间隔
                // 在SDK中调用setAlias(alias, alias_type)时所设置的alias
  "file_id":"xx", // 当type=filecast时,必填,file内容为多条device_token,以回车符分割
                  // 当type=customizedcast时,选填(此参数和alias二选一)
                  //   file内容为多条alias,以回车符分隔。注意同一个文件内的alias所对应
                  //   的alias_type必须和接口参数alias_type一致。
                  // 使用文件播需要先调用文件上传接口获取file_id,参照"2.4文件上传接口"
  "filter":{}, // 当type=groupcast时,必填,用户筛选条件,如用户标签、渠道等,参考附录G。
  "payload": // 必填,JSON格式,具体消息内容(Android最大为1840B)
  {
    "display_type":"xx",   // 必填,消息类型: notification(通知)、message(消息)   
    "body": // 必填,消息体。
            // 当display_type=message时,body的内容只需填写custom字段。
            // 当display_type=notification时,body包含如下参数:
    {
        // 通知展现内容:
        "ticker":"xx",     // 必填,通知栏提示文字
        "title":"xx",      // 必填,通知标题
        "text":"xx",       // 必填,通知文字描述 

        // 自定义通知图标:
        "icon":"xx",       // 可选,状态栏图标ID,R.drawable.[smallIcon],
                           // 如果没有,默认使用应用图标。
                           // 图片要求为24*24dp的图标,或24*24px放在drawable-mdpi下。
                           // 注意四周各留1个dp的空白像素
        "largeIcon":"xx",  // 可选,通知栏拉开后左侧图标ID,R.drawable.[largeIcon],
                           // 图片要求为64*64dp的图标,
                           // 可设计一张64*64px放在drawable-mdpi下,
                           // 注意图片四周留空,不至于显示太拥挤
        "img": "xx",       // 可选,通知栏大图标的URL链接。该字段的优先级大于largeIcon。
                           // 该字段要求以http或者https开头。

        // 自定义通知声音:
        "sound": "xx",     // 可选,通知声音,R.raw.[sound]。
                           // 如果该字段为空,采用SDK默认的声音,即res/raw/下的
                           // umeng_push_notification_default_sound声音文件。如果
                           // SDK默认声音文件不存在,则使用系统默认Notification提示音。

        // 自定义通知样式:
        "builder_id": xx   // 可选,默认为0,用于标识该通知采用的样式。使用该参数时,
                           // 开发者必须在SDK里面实现自定义通知栏样式。

        // 通知到达设备后的提醒方式,注意,"true/false"为字符串
        "play_vibrate":"true/false", // 可选,收到通知是否震动,默认为"true"
        "play_lights":"true/false",  // 可选,收到通知是否闪灯,默认为"true"
        "play_sound":"true/false",   // 可选,收到通知是否发出声音,默认为"true"

        // 点击"通知"的后续行为,默认为打开app。
        "after_open": "xx" // 必填,值可以为:
                           //   "Go_app": 打开应用
                           //   "go_url": 跳转到URL
                           //   "go_activity": 打开特定的activity
                           //   "go_custom": 用户自定义内容。
        "url": "xx",       // 当after_open=go_url时,必填。
                           // 通知栏点击后跳转的URL,要求以http或者https开头  
        "activity":"xx",   // 当after_open=go_activity时,必填。
                           // 通知栏点击后打开的Activity
        "custom":"xx"/{}   // 当display_type=message时, 必填
                           // 当display_type=notification且
                           // after_open=go_custom时,必填
                           // 用户自定义内容,可以为字符串或者jsON格式。
    },
    extra:                 // 可选,JSON格式,用户自定义key-value。只对"通知"
                           // (display_type=notification)生效。
                           // 可以配合通知到达后,打开App/URL/Activity使用。
    {
        "key1": "value1",
        "key2": "value2",
        ...
    }
  },
  "policy":                // 可选,发送策略
  {
      "start_time":"xx",   // 可选,定时发送时,若不填写表示立即发送。
                           // 定时发送时间不能小于当前时间
                           // 格式: "yyyy-MM-dd HH:mm:ss"。 
                           // 注意,start_time只对任务生效。
      "expire_time":"xx",  // 可选,消息过期时间,其值不可小于发送时间或者
                           // start_time(如果填写了的话),
                           // 如果不填写此参数,默认为3天后过期。格式同start_time
      "max_send_num": xx   // 可选,发送限速,每秒发送的最大条数。最小值1000
                           // 开发者发送的消息如果有请求自己服务器的资源,可以考虑此参数。
      "out_biz_no": "xx"   // 可选,开发者对消息的唯一标识,服务器会根据这个标识避免重复发送。
                           // 有些情况下(例如网络异常)开发者可能会重复调用API导致
                           // 消息多次下发到客户端。如果需要处理这种情况,可以考虑此参数。
                           // 注意, out_biz_no只对任务生效。
  },
  "production_mode":"true/false", // 可选,正式/测试模式。默认为true
                                 // 测试模式只会将消息发给测试设备。测试设备需要到web上添加。
                                 // Android: 测试设备属于正式设备的一个子集。
  "description": "xx",      // 可选,发送消息描述,建议填写。  
  "mipush": "true/false",   // 可选,默认为false。当为true时,表示MIUI、EMUI、Flyme系统设备离线转为系统下发
  "mi_activity": "xx",      // 可选,mipush值为true时生效,表示走系统通道时打开指定页面acitivity的完整包路径。
}

    ios:

      

{
  "appkey":"xx",    // 必填,应用唯一标识
  "timestamp":"xx", // 必填,时间戳,10位或者13位均可,时间戳有效期为10分钟
  "type":"xx",      // 必填,消息发送类型,其值可以为: 
                    //   unicast-单播
                    //   listcast-列播,要求不超过500个device_token
                    //   filecast-文件播,多个device_token可通过文件形式批量发送
                    //   broadcast-广播
                    //   groupcast-组播,按照filter筛选用户群, 请参照filter参数
                    //   customizedcast,通过alias进行推送,包括以下两种case:
                    //     - alias: 对单个或者多个alias进行推送
                    //     - file_id: 将alias存放到文件后,根据file_id来推送
  "device_tokens":"xx", // 当type=unicast时, 必填, 表示指定的单个设备
                        // 当type=listcast时, 必填, 要求不超过500个, 以英文逗号分隔
  "alias_type": "xx", // 当type=customizedcast时, 必填
                      // alias的类型, alias_type可由开发者自定义, 开发者在SDK中
                      // 调用setAlias(alias, alias_type)时所设置的alias_type
  "alias":"xx", // 当type=customizedcast时, 选填(此参数和file_id二选一)
                // 开发者填写自己的alias, 要求不超过500个alias, 多个alias以英文逗号间隔
                // 在SDK中调用setAlias(alias, alias_type)时所设置的alias
  "file_id":"xx", // 当type=filecast时,必填,file内容为多条device_token,以回车符分割
                  // 当type=customizedcast时,选填(此参数和alias二选一)
                  //   file内容为多条alias,以回车符分隔。注意同一个文件内的alias所对应
                  //   的alias_type必须和接口参数alias_type一致。
                  // 使用文件播需要先调用文件上传接口获取file_id,参照"2.4文件上传接口"
  "filter":{}, // 当type=groupcast时,必填,用户筛选条件,如用户标签、渠道等,参考附录G。
  "payload":   // 必填,JSON格式,具体消息内容(iOS最大为2012B)
  {
    "aps":      // 必填,严格按照APNs定义来填写
    {
        "alert":""/{ // 当content-available=1时(静默推送),可选; 否则必填。
                     // 可为JSON类型和字符串类型
            "title":"title",
            "subtitle":"subtitle",
            "body":"body"
        }                   
        "badge": xx,           // 可选        
        "sound": "xx",         // 可选         
        "content-available":1  // 可选,代表静默推送     
        "category": "xx",      // 可选,注意: ios8才支持该字段。
    },
    "key1":"value1",       // 可选,用户自定义内容, "d","p"为友盟保留字段,
                           // key不可以是"d","p"
    "key2":"value2",       
    ...
  },
  "policy":               // 可选,发送策略
  {
      "start_time":"xx",   // 可选,定时发送时间,若不填写表示立即发送。
                           // 定时发送时间不能小于当前时间
                           // 格式: "yyyy-MM-dd HH:mm:ss"。 
                           // 注意,start_time只对任务生效。
      "expire_time":"xx",  // 可选,消息过期时间,其值不可小于发送时间或者
                           // start_time(如果填写了的话), 
                           // 如果不填写此参数,默认为3天后过期。格式同start_time
      "out_biz_no": "xx"   // 可选,开发者对消息的唯一标识,服务器会根据这个标识避免重复发送。
                           // 有些情况下(例如网络异常)开发者可能会重复调用API导致
                           // 消息多次下发到客户端。如果需要处理这种情况,可以考虑此参数。
                           // 注意,out_biz_no只对任务生效。
      "apns_collapse_id": "xx" // 可选,多条带有相同apns_collapse_id的消息,iOS设备仅展示
                               // 最新的一条,字段长度不得超过64bytes
  },
  "production_mode":"true/false" // 可选,正式/测试模式。默认为true
                                 // 测试模式只会将消息发给测试设备。测试设备需要到web上添加。
  "description": "xx"      // 可选,发送消息描述,建议填写。     
}

    调用返回:

{
  "ret":"SUCCESS/FAIL", // 返回结果,"SUCCESS"或者"FAIL"
  "data": 
    {
        // 当"ret"为"SUCCESS"时,包含如下参数:
        // 单播类消息(type为unicast、listcast、customizedcast且不带file_id)返回:
        "msg_id":"xx" 
        // 任务类消息(type为broadcast、groupcast、filecast、customizedcast且file_id不为空)返回
        "task_id":"xx"

        // 当"ret"为"FAIL"时,包含如下参数:
        "error_code":"xx" // 错误码,详见附录I
        "error_msg":"xx"  // 错误信息
    }  
}

四、单播demo代码

  

五、自定义播demo代码

  

 

六、广播demo代码

  

七、组播demo代码

  

def _make_umeng_android_group_entity(umeng_appkey, appMasterSecret, sak_push_data, unread_num, tags):
    desc = sak_push_data.get('desc', '') #从数据中获取desc
    filter = {'where': {'or': tags}}
    logger.debug("_make_umeng_android_broadcast_entity broadcast desc:%s" % desc)
    title = sak_push_data.get('title', '') #从数据中获取title
    message = AndroidGroupcast(umeng_appkey, appMasterSecret)
    message.setTicker(desc) # 设置ticker
    message.setTitle(title) # 设置title
    message.setText(desc)   # 设置text
    message.setFilter(filter)#设置筛选标签filter 格式:"where": { "and": [ {"tag":"reGIStered_user"}, // 开发者自定义tag {"app_version":"1.0"}, // app-version {"launch_from":"2014-11-15"} // X天活跃/不活跃 ] }
  # and可以替换为or、大于等于小于、not、and/or/not可以组合用 message.goAppAfterOpen() message.setDisplayType(AndroidNotification.DisplayType.notification) message.setPredefinedKeyValue("mipush", 'false') message.setPredefinedKeyValue("mi_activity", 'com.aipai.umengpush.UmengPushClickActivity ') message = message.setProductionMode() logger.debug("_make_umeng_android_broadcast_entity message:%s" % message) return message

 

八、如何设置任意参数中的字段

# 使用setPredefinedKeyValue(key,value)
setPredefinedKeyValue("mipush", 'false')
# 使用setPredefinedKeyValue的时候,类中会自动循环判断参数中的所有key,当key存在时,会设置为value

 九、Ticker、Title、Text所以对应的安卓推送通知的位置

 

 

 

 

 

--结束END--

本文标题: 友盟消息推送api、python sdk

本文链接: https://www.lsjlt.com/news/180463.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 友盟消息推送api、python sdk
    一,友盟消息推送python服务端sdk地址和文档地址   1.sdk地址:http://dev.umeng.com/system/resources/W1siZiIsIjIwMTYvMDgvMTkvMTdfNDFfMzhfNzg2X3B...
    99+
    2023-01-30
    消息 api sdk
  • thinkphp如何实现友盟消息推送
    这篇文章主要为大家展示了“thinkphp如何实现友盟消息推送”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“thinkphp如何实现友盟消息推送”这篇文章吧。上...
    99+
    2024-04-02
  • Python实现向好友发送微信消息
    目录前言c语言发微信消息Python调用不用c编写dll如何发消息调用我们写入的机器码第一次优化第二次优化x86/x64 Call Jmp指令区别前言 原理:Windows逆向,通过...
    99+
    2024-04-02
  • FCM( Firebase) 发送推送消息PHP
    Firebase 的管理后台也有发送测试消息推送的入口,在左侧栏目的 Cloud Messaging 准备工作: 1、准备好 服务器秘钥, 如图 打开postman , 创建一个新的api 请求 1...
    99+
    2023-09-02
    php json 开发语言
  • 如何用Python自动给朋友发送消息
    这篇文章主要讲解了“如何用Python自动给朋友发送消息”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用Python自动给朋友发送消息”吧!首先我们下载两个要用的Python库,在命令行...
    99+
    2023-06-17
  • Flutter:flutter_local_notifications——消息推送的学习
    前言 注: 刚开始学习,如果某些案例使用时遇到问题,可以自行百度、查看官方案例、官方github。 简介 Flutter Local Notifications是一个用于在Flutter应用程序中显示...
    99+
    2023-08-31
    flutter flutter消息通知
  • 企业微信消息推送(推送给个人)
    官方开发文档:文档 - 企业微信开发者中心 获取access_token 请求方式 GET请求地址 https://qyapi.weixin.qq.com/cgi-bin/gettoken请求参数是否必填说明corpid是企业ID,参考:...
    99+
    2023-09-07
    php 微信
  • WebSocket简介与消息推送
    目录一、Socket简介TCP/IP协议UDP协议二、WebSocket简介与消息推送三、WebSocket客户端四、WebSocket服务器端五、测试运行六、小结与消息推送框架6....
    99+
    2024-04-02
  • 消息推送实现|使用WebSocket主动推送消息到客户端方案
    一. 前言 在开发中,我们经常会遇到这样一类需求:需要在网页上显示天气预报,股票数据或者实时排行榜单等实时变化的数据。对于此类需求,一种较为原始的做法就是让客户端每隔一段时间主动去轮询服务器。但这种做法有一个很大的弊端:如果客户端的数量很大...
    99+
    2023-09-18
    websocket 服务器 网络协议
  • Springboot Websocket Stomp 消息订阅推送
    目录需求背景websocket协议stomp协议需求背景 闲话不扯,直奔主题。需要和web前端建立长链接,互相实时通讯,因此想到了websocket,后面随着需求的变更,需要用户订...
    99+
    2024-04-02
  • python3实现钉钉消息推送
    背景 偶然发现一个python实现的按照农历/阴历推送消息提醒的程序,钉钉群消息推送。此处总结并对其可推送的消息做。 DingtalkNotice 环境:python3.7 安装:pip install schedule #实现定时任务的...
    99+
    2023-01-31
    消息
  • redis怎么做的消息推送
    redis做消息推送的示例:客户端A订阅通道:redis 127.0.0.1:6379> SUBSCRIBE channeltest客户端B往该通道发送消息:redis 127.0.0.1:63...
    99+
    2024-04-02
  • Python实现向好友发送微信消息优化篇
    目录前言第二次优化第三次优化前言 之前说了怎么写机器码到内存,然后调用。现在说说怎么优化。 用Python发送微信消息给好友 第二次优化 再看一遍c语言的代码 void SendTe...
    99+
    2024-04-02
  • FineReport如何手动推送APP消息
    今天给大家介绍一下FineReport如何手动推送APP消息。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。在报表填报成功后,发送消息至APP会提示数据已更新。...
    99+
    2023-06-04
  • react-native消息推送实现方式
    目录react-native极光推送一、安装插件二、配置安卓配置IOS配置三、使用解决ios角标无法清除总结react-native极光推送 先去官网注册:https://www.j...
    99+
    2023-02-18
    react-native消息推送 react-native 消息推送
  • Python怎么实现自动给指定好友发送消息
    这篇文章主要讲解了“Python怎么实现自动给指定好友发送消息”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么实现自动给指定好友发送消息”吧!...
    99+
    2024-04-02
  • android消息推送机制是什么
    Android消息推送机制是一种通过网络将消息推送给已经安装了应用程序的Android设备的技术。它主要依靠Google提供的Fir...
    99+
    2023-09-28
    android
  • 如何用PHP实现消息推送
     什么是消息推送 通过服务器自动推送消息到客户端(浏览器,APP,微信)的应用技术。  为什么要使用消息推送技术 通常情况下都是用户发送请求浏览器显示用户需要的信息。推送技术通过自动传送信息给用户,来减少用于网络上搜索的时间。它根据用户的兴...
    99+
    2023-08-31
    php 开发语言 websocket
  • HTML5 WebSocket怎么实现消息推送
    这篇“HTML5 WebSocket怎么实现消息推送”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看...
    99+
    2024-04-02
  • SpringBoot+WebSocket实现消息推送功能
    目录背景WebSocket简介协议原理WebSocket与HTTP协议的区别WebSocket特点应用场景系统集成Websocketjar包引入Websocket配置具体实现测试示例...
    99+
    2022-11-13
    SpringBoot WebSocket消息推送 SpringBoot 消息推送 SpringBoot WebSocket
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作