添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
旅行中的充值卡  ·  Handle Errors | Use ...·  1 周前    · 
老实的玉米  ·  springboot+kafka中@Kafk ...·  3 天前    · 
俊秀的遥控器  ·  Staying on topic: ...·  2 天前    · 
难过的盒饭  ·  Canal ...·  昨天    · 
兴奋的烤红薯  ·  ODBC | ...·  2 月前    · 
留胡子的楼梯  ·  材料科学·  3 月前    · 

发单一消息

支持按照 reg_id / alias / topic / topics / user / all 的方式向单个或一组设备发送同一条推送消息。

require 'xiaomi-push'
# 初始化
# iOS (环境支持 :production/:sandbox)
client = Xiaomi::Push::IOS('Fill your app secret', :production)
# Android
client = Xiaomi::Push::Android('Fill your app secret')
# 消息结构
# Hash 模式
message = {
  'title': 'Android 需要标题',
  'descrption': 'iOS 主要显示描述',
  'extra.uri': 'app://bbs?id=8624'
# Builder 模式
# iOS
message = Xiaomi::Push::Message::IOS.new(
  description: 'iOS 主要显示描述',
  badge: 10,
  extras: {
    uri: 'app://bbs?id=8624',
    source: 'mpush'
# iOS 10
message = Xiaomi::Push::Message::IOS.new(
  title: '这是标题',
  subtitle: '这是副标题'
  description:'iOS 主要显示描述', # 对于 iOS 这里即可以是 description 也可以是 iOS 10 结构的 body
  badge: 1,
  extras: {
    uri: 'app://bbs?id=8624',
    source: 'mpush'
# Android
message = Xiaomi::Push::Message::Android.new(
  title: '标题要有吸引力',
  description: '描述可以在手机显示两行',
  notify_type: 'DEFAULT_ALL',
  extras: {
    source: 'mpush'
# 支持单独追加 extra
message.extra('uri', 'app://bbs?id=8624')
# 发消息
# 根据 regid
client.message.send reg_id:'id', message:message
# 根据 alias
client.message.send alias:'alias', message:message
# 根据 topic
client.message.send topic:'topic', message:message
# 全部推送
client.message.send all:true, message:message

发送多条消息

支持同一设备类型的设备发送不同的消息。注意发送多个消息不能是不同类型的设备 key。

支持的消息类型:

  • :reg_id
  • reg_id
  • regid
  • registration_id
  • :alias
  • :alias
  • :user
  • :user
  • :account
  • :useraccount
  • :user_account
  • 以上子列表为消息体传递的设备的 key 的名字。

    # 向多个 reg id 发送不同的消息
    client.messages.send(:reg_id, [
        reg_id: 'abc',
        title: '这是标题1',
        description: '这个是推送的描述1',
        notify_type: -1
        regid: 'dfc',
        title: '这是标题2',
        description: '这个是推送的描述2',
        registration_id: 'dfc',
        title: '这是标题2',
        description: '这个是推送的描述2',
    # 这个是错误的消息,无法发送
    client.messages.send(:alias, [
        reg_id: 'abc',
        title: '这是标题1',
        description: '这个是推送的描述1',
        notify_type: -1
        user: 'dfc',
        title: '这是标题2',
        description: '这个是推送的描述2',
    

    订阅/取消订阅标签

    # 订阅单个 reg id 到 beijing 标签
    client.topic.subscribe(reg_id: 'abc', topic: 'beijing')
    # 订阅多个 alias 到 beijing 标签
    client.topic.subscribe(alias: 'abc,def,ghi,jkl', topic: 'beijing')
    # 取消订阅 beijing 标签的单个 reg id
    client.topic.unsubscribe(reg_id: 'abc', topic: 'beijing')
    # 取消订阅 beijing 标签的多个 alias
    client.topic.unsubscribe(alias: 'abc,def,ghi,jkl', topic: 'beijing')
    

    获取无效 iOS 的推送设备

    用于检查 iOS 用户关闭了应用的推送或者是卸载了 App 的设备列表

    client.feedback.invalid
    

    获取消息的统计数据

    # 获取 2017-09-01 到 2017-09-30 应用 com.icyleaf.app.helloworld 统计数据
    client.message.counters('20170901', '20170930', 'com.icyleaf.app.helloworld')
    

    更多用例可查阅 Rakefile

    命令行工具

    本 SDK 同时还附带一个命令行工具 xmp,可以使用它尽快快速的测试和验证参数信息.

    # 发消息
    ## iOS
    ### 发送附加内容并设置未读消息数为 2
    $ xmp message --device ios --secret '<密钥>' \
      --alias '<Alias>' \
      -d '推送的描述内容' \
      -b 2 \
      -e uri="http://icyleaf.com"
    # => {"result"=>"ok", "trace_id"=>"abc", "code"=>0, "data"=>{"id"=>"abc68b8350529097551xyz"}, "description"=>"成功", "info"=>"Received push messages for 1 ALIAS"}
    ## Android
    ### 最基本的推送信息
    $ xmp message --device android --secret '<密钥>' \
      --regid '<RegId>' \
      -i '推送的标题' \
      -d '推送的描述内容'
    # => {"result"=>"ok", "trace_id"=>"abc", "code"=>0, "data"=>{"id"=>"abc68b8350529097551xyz"}, "description"=>"成功", "info"=>"Received push messages for 1 REG_ID"}
    # 查找绑定的 aliases 和 topics
    $ xmp user --device ios --secret '<密钥>' --reg-id '<RegId>'
    # => alias count: 1
    # =>  * ABCDEFGH-1234-5678-90ABC-F4DC5731EEFD
    # => topic count: 1
    # =>  * all
    # 查找 iOS 无效的设备(Reg id)
    $ xmp feedback --device ios --secret '<密钥>'
    # => {"result"=>"ok", "trace_id"=>"Xlm07b67505290966457ey", "code"=>0, "data"=>{"list"=>["+9AKnbpV22HafwE7vjYMr6Hc7i41ClyQr7iqX1fm7zc="]}}
    # 查看帮助
    $ xmp message --help
      NAME:
      DESCRIPTION:
        小米推送命令行工具
      COMMANDS:
        feedback 获取小米无效的设备列表
        message  发送小米推送消息
        user     小米 aliases/topics 查询工具
    
  • 官方 API 文档: https://dev.mi.com/console/doc/detail?pId=1163
  • 官方 SDK 下载:https://dev.mi.com/mipush/downpage/ (Python Java PHP)
  • Fork it ( https://github.com/[my-github-username]/xiaomi-push/fork )
  • Create your feature branch (git checkout -b my-new-feature)
  • Commit your changes (git commit -am 'Add some feature')
  • Push to the branch (git push origin my-new-feature)
  • Create a new Pull Request
  • Generated on Wed May 1 10:27:55 2024 by 0.9.34 (ruby-3.2.2).