(unofficial) xiaomi push server sdk for ruby - 非官方小米推送服务端 Ruby SDK
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
bin
lib/xiaomi
spec
.gitignore
.rspec
CHANGELOG.md
Gemfile
README.md
Rakefile
xiaomi-push.gemspec

README.md

非官方小米推送服务端 Ruby SDK

Build Status Code Climate Inline docs Gem version License

TL;DR

特别注意:仅支持 Ruby 2.1.0 (包含)以上版本。

安装

添加如下至 Gemfile:

gem 'xiaomi-push'

执行:

$ bundle

或直接安装:

$ gem install xiaomi-push

用法

发单一消息

支持按照 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:

    xmp

  DESCRIPTION:

    小米推送命令行工具

  COMMANDS:

    feedback 获取小米无效的设备列表
    message  发送小米推送消息
    user     小米 aliases/topics 查询工具

相关资源

贡献代码

  1. Fork it ( https://github.com/[my-github-username]/xiaomi-push/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request