→参与讨论

Pushbullet曾经是一个全平台的跨设备消息推送服务。开发者由于不满iOS的封闭性而长期停更,最终借着苹果强推Apple ID登录的契机彻底下架了iOS客户端。

这次尝试用Pushbullet官方API 快捷指令复刻一个低配版的Pushbullet

依赖的工具


配置

1. 获取Access Token

登录账号后访问 https://www.pushbullet.com/#settings/account 生成API令牌

screenshot

2. 获取设备ID

如果你并不想对各台设备进行区分,则无需获取设备ID便可直接进入第3步。

如果想要精准地推送或接收某台设备的消息,我们需要先知道它的device_iden

访问Pushbullet API可以获取所有曾经登录过Pushbullet官方客户端的设备的ID。如果你已经错过了Pushbullet官方iOS App的上架时间,在获取到的列表中自然就找不到你的iOS设备,这种情况也可以向API请求生成新的设备ID。

推荐使用这个一次性快捷指令完成这两个过程,用完即删。

你也可以使用任意其他的HTTP调试工具,例如Pushbullet API 官方文档示例的curl

获取已有iden

curl --header 'Access-Token: <your_access_token_here>' \
     https://api.pushbullet.com/v2/devices
甚至不一定要使用HTTP调试工具

这一步也可以直接浏览器访问 https://api.pushbullet.com/v2/devices ,用户名填第一步获取的Access Token,密码留空,服务器会返回一段没分行的纯文本。

用你的火眼金睛在其中找到你的iOS、Android、Chrome等等设备的iden并记录。你可以用JSON Beautify工具 将JSON自动分行,提高搜寻的效率

生成新的iden

curl --header 'Access-Token: <your_access_token_here>' \
     --header 'Content-Type: application/json' \
     --data-binary '{"app_version":8623,"manufacturer":"Apple","model":"iPhone 5s (GSM)","nickname":"Elon Musk's iPhone","push_token":"production:f73be0ee7877c8c7fa69b1468cde764f"}' \
     --request POST \
     https://api.pushbullet.com/v2/devices

3. 配置快捷指令

成品有两个版本:

更新日志

2020/8/26: 初始发布

2020/9/30: 现在可以获取其他设备发送给iOS的推送,可使用独立的接收Shortcut或者二合一的Shortcut

2020/11/2: 修复了无法正确判断url的问题

首次运行快捷指令前需要填入三个字段

  • access_token: 第一步获取的令牌
  • this_device_iden: 第二步获取或生成的iOS设备本机的device_iden
  • remote_device_iden: 第二步获取的其他设备的device_iden(例如Chrome、Android)
  • 如果你跳过了第二步,那么请把所有“获取URL内容”步骤中的 device_idensource_device_iden 字段删除,自行添加 email: 你的账号字段

    screenshot

    使用

    快捷指令提供三种入口:小部件、主屏幕图标、共享表单

    共享表单 小部件和图标
    二合一版 推送传入的链接或文本 一键提取发送给本机的最新一条推送
    独立版 推送传入的链接或文本 推送剪贴板中的链接或文本
    一键提取发送给本机的最新一条推送

    你甚至可以自定义图标制作一个以假乱真的“自定义图标Pushbullet客户端”

    screenshot



    延伸:一键转发验证码的实现思路

    iOS14更新中,快捷指令的自动化新增了“收到短信”的触发条件

    我们可以以此建立一个自动化。当收到包含验证码的短信时,提取出验证码,调用上面的指令推送到Chrome、Android等其他设备

    screenshot

    不过在实际收到短信时,快捷指令只是弹出一条通知,要我们拿起手机点击通知才能执行

    因此这只能算是分享一个思路,由于快捷指令自身能力的限制,并没有实用的价值。一旦iOS15、iOS16引入了自动化,这个思路就可以实际应用了