【系列教程】使用 Vercel Serverless function 连接 APNs 实现 iOS 推送通知(2)

【系列教程】使用 Vercel Serverless function 连接 APNs 实现 iOS 推送通知(2)

💡 原文中文,约3900字,阅读约需10分钟。
📝

内容提要

本文介绍了在 Expo 应用中实现推送通知的方法,包括设置通知类型、处理用户点击通知后的跳转,以及服务器端发送通知的代码。通过监听导航状态,确保应用初始化后进行跳转,并使用 JWT 生成和发送 APNS 消息,旨在帮助开发者。

🎯

关键要点

  • 本文介绍了在 Expo 应用中实现推送通知的方法。

  • 在 App 入口设置通知类型和侦听用户点击通知的动作。

  • 使用 Notifications.setNotificationHandler 设置通知处理程序。

  • 通过侦听 rootNavigationState 的变化来确保跳转时机。

  • 目标页面的处理使用 useGlobalSearchParams 方法获取全局路由参数。

  • 发送通知的代码部署在服务器端,通过 cronjob 定时调用。

  • 创建环境变量以存储 APNS 相关信息。

  • 使用 jwt 生成和计算 JWT 密钥。

  • 请求 APNS 发送消息时需使用 node.js http2 模块。

  • 总结了使用 Serverless function 发送推送通知的核心代码。

🔎

延伸解读

推送通知的实现细节

在实现推送通知时,开发者需要注意应用的初始化时机。由于旧设备可能会导致应用在用户点击通知时尚未完全启动,因此建议通过侦听导航状态变化来确保跳转的时机。这种方法可以有效避免因应用未初始化而导致的跳转失败问题。

服务器端代码的部署

发送推送通知的代码需要在服务器端运行,本文提到使用 Vercel Serverless 部署,并通过 cronjob 定时调用。这种方式可以确保在用户设定的时间发送通知,适合需要定时推送的应用场景。开发者需确保环境变量的正确配置,以便顺利生成 JWT 并请求 APNS。

使用 JWT 进行身份验证

在与 APNs 进行通信时,使用 JWT 进行身份验证是必不可少的。开发者需要正确计算 JWT 密钥,并确保在请求中包含必要的头信息。注意,使用 node.js 的 http2 模块进行请求是 Apple 的要求,确保请求的完整性和正确性至关重要。

延伸问答

如何在 Expo 应用中设置推送通知的类型?

在 App 入口中设置通知类型,使用 Notifications.setNotificationHandler 方法来配置通知处理程序。

如何处理用户点击推送通知后的跳转?

通过侦听 rootNavigationState 的变化来确保在应用初始化完成后进行跳转,并使用 redirect 函数处理跳转逻辑。

发送推送通知的代码如何部署?

发送通知的代码部署在 Vercel Serverless,通过 cronjob 定时调用,在用户设定的时间发送通知。

如何生成和计算 JWT 密钥?

使用 jsonwebtoken 库,调用 jwt.sign 方法生成 JWT 密钥,需提供 APNS_TEAM_ID 和 APNS_TOKEN 等环境变量。

请求 APNS 发送消息时需要注意什么?

必须使用 node.js http2 模块发送请求,不能使用 fetch,并且要确保请求完整发出,使用 Promise 包裹请求。

如何获取全局路由参数以处理跳转?

使用 useGlobalSearchParams 方法获取全局路由参数,确保在目标页面处理跳转时能够正确传递参数。

🏷️

标签

➡️

继续阅读