OneSignal
OneSignal 暴露了许多REST API,只要拿到对应的appId,通过简单的http请求就能向集成OneSignal推送的目标设备发起推送。不仅如果,各种与其平台相关的操作都有API。
实现https请求有许多方式,各个语言也是各显神通。Onesignal十分友好的提供了各语言的简单实现,满足各种情况的推送需求。
请求结构
OneSignal 发送推送 API 需要Post json数据到 https://onesignal.com/api/v1/notifications
请求头部信息:
- Content-Type: application/json; charset=utf-8
Authorization: Basic XXX(授权码)
授权码,我瞎写了一个也能跑的通。暂不知道为什么
请求体
请求体是封装好相应所需参数的json字符串。以下为相应所需参数。
- app_id 或者 app_ids(推送多个app) 是必须的,但别两个都发
key | 说明 | 数据结构 | example |
---|---|---|---|
contents | 推送内容 | 对象 | {“en”: “English Message”, “es”: “Spanish Message”} |
headings | 推送标题 | 对象 | {“en”: “English Title”, “es”: “Spanish Title”} |
subtitle | 推送子标题 | 对象(仅ios 10+) | {“en”: “English Title”, “es”: “Spanish Title”} |
big_picture | 推送大图 | 字符串(仅android) | “big_picture.png” |
data | 携带的数据 | 自定义 | 自己协定好的格式,取到后能正常解析就行 |
include_player_ids | 推送的设备 | 数组 | [“AAA”,”BBB”] |
推送设备id是Onesignal给设备生成的UUID,类似这样的:6392d91a-b206-4b7b-a620-cd68e32c3a7x
Python 实现
前文说到onesignal提供了许多实现,下文就是代码。
1 | # -*- coding: UTF-8 -*- |
把上面的代码 复制到 push.py 里,修改成你想要的推送内容。 在终端输入命令 就可以跑了(python3 环境自备)
1 | python3 push.py |
如果终端打印出 200 就可以了,注意 响应体里面的 recipients 它标识着被推送的用户数,正常就个位数,
如果不是 那问题就严重了,所以一定要小心,先抓包验证没问题 再推。