33次发布
0.10.0 | 2024年5月5日 |
---|---|
0.8.1 | 2024年4月25日 |
0.8.0 | 2023年8月29日 |
0.7.1 | 2023年6月5日 |
0.3.3 | 2018年6月26日 |
#228 in 加密学
1,301 monthly downloads
用于 xorc-notifications
100KB
1.5K SLoC
a2
使用Tokio和异步发送的Rust HTTP/2 Apple推送通知服务。
要求
需要Tokio执行器版本1.0或更高版本以及Rust编译器版本1.60.0或更高版本。
特性
- 基于
h2
和的快速异步发送。 - 使用
进行有效载荷序列化和反序列化。 - 提供了一种类型安全的构建不同类型有效载荷的方法。通过
使用自定义数据,允许使用结构体或动态哈希表。 - 支持<.p12>证书数据库,以使用自定义证书连接。
- 支持<.p8>私钥,以使用身份验证令牌连接。
- 如果使用身份验证令牌,则处理Apple指南下的签名更新和缓存以实现最佳性能。
- 加密原语由openssl或ring提供。
示例
该库支持使用证书(带密码)或私钥(带团队ID和密钥ID)连接到Apple推送通知服务。这两者都可以从您的Apple账户中获取,并且使用它们都可以向一个应用程序发送推送通知。
要了解它在真实项目中的使用,请查看Echo服务器,这是一个由WalletConnect创建的项目,用于处理传入的webhooks并将它们转换为推送通知。
注意事项
我们每天通过这个库推送数百万条通知,对此非常满意。如果您正在评估该库的生产使用,以下是一些需要了解的事项:
-
不要为每个请求打开新的连接。苹果会将此视为拒绝服务攻击并阻止发送IP地址。当使用同一个
Client
处理多个请求时,Client
会保持连接活跃,如果通过它推送稳定的流量。 -
对于某些类型的负载,一个应用程序已经足够使用一个连接。使用http2协议时,事件是异步的,管道可以同时保持多个出站请求。打开多个连接的最大原因是为了冗余,在多台不同的机器上运行您的发送服务。
-
看起来苹果不喜欢发送大量带有无效设备令牌的通知,这可能会导致
ConnectionError
。不要发送带有返回Unregistered
、BadDeviceToken
或DeviceTokenNotForTopic
令牌的通知。
测试
cargotest
依赖项
~18–28MB
~509K SLoC