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 加密学

Download history 670/week @ 2024-04-25 401/week @ 2024-05-02 358/week @ 2024-05-09 577/week @ 2024-05-16 373/week @ 2024-05-23 406/week @ 2024-05-30 276/week @ 2024-06-06 282/week @ 2024-06-13 290/week @ 2024-06-20 181/week @ 2024-06-27 226/week @ 2024-07-04 239/week @ 2024-07-11 345/week @ 2024-07-18 381/week @ 2024-07-25 294/week @ 2024-08-01 233/week @ 2024-08-08

1,301 monthly downloads
用于 xorc-notifications

MIT 许可证

100KB
1.5K SLoC

a2

CI Status MIT licensed crates.io docs.rs

使用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。不要发送带有返回UnregisteredBadDeviceTokenDeviceTokenNotForTopic令牌的通知。

测试

cargotest

依赖项

~18–28MB
~509K SLoC