Tag: 远程通知

iOS中的远程通知

由Apple推送通知服务(APN)管理的远程通知是一种有效的方式,即使应用程序(例如消息传递应用程序)处于非活动状态,也可以将任何数据更改传达给用户。 先决条件: 您需要注册Apple Developer Program才能使用此功能并拥有实际的设备。 推送通知在模拟器上不起作用。 在开发人员帐户中创建一个应用程序ID,并为其启用“推送通知”服务,例如com.notifications.sample。 使用与您的捆绑包标识符相同的应用程序ID。 接下来,您需要在Capabilities中启用推送通知。 要求授权和注册 始终要求用户允许显示通知,然后向APN注册您的应用。 在应用启动完成之前,导入UserNotifications框架并在“ application:didFinishLaunchingWithOptions:”中执行这些操作。 UNUserNotificationCenter是管理通知相关活动的中心对象。 用户可能不会授权通知,也可能随时更改应用程序的通知设置。 因此,在注册远程通知之前,请检查当前设置。 2. 设备令牌 注册成功后,您会在“ application:didRegisterForRemoteNotificationsWithDeviceToken:”中收到设备令牌;如果注册失败,则会在“ application:didFailToRegisterForRemoteNotificationsWithError:”中收到错误消息 。 因此,在AppDelegate中实现这两个委托方法。 APNs使用其唯一的设备令牌识别任何设备,并将通知路由到该设备。 因此,为了接收推送通知,请将设备令牌发送到提供程序服务器。 每当必须发送通知时,提供程序服务器还会将通知有效负载和设备令牌发送到APN。 注意:每次从系统询问设备令牌之前,都要先将其发送到服务器。 当用户从备份还原设备,重新安装操作系统或在新设备上安装应用程序时,APN会发布新的设备令牌,因此请勿缓存设备令牌。 3. 处理通知 您必须在应用完成启动之前将对象分配给委托,无论是在应用委托的application(_:willFinishLaunchingWithOptions 🙂还是application(_:didFinishLaunchingWithOptions 🙂中。 为了处理在应用程序在前台运行时到达的通知或处理通知上的用户操作,请在对象中实现UNUserNotificationCenterDelegate协议的方法,然后将该对象分配给共享UNUserNotificationCenter的委托属性。 通知到达时会触发这两个委托方法中的任何一个,具体取决于应用程序是在前台运行还是在后台运行。 当应用程序在前台运行时,不会显示通知。 因此,为了显示警报或播放声音或标记图标, 请在complementHandler ()中传递类型为UNNotificationPresentationOptions的任何属性。 相关话题: iOS中的本地通知 具有自定义操作的通知

远程通知样本

要模拟远程通知,您需要配置iOS应用和提供商服务器。 如果您还不了解通知,则需要阅读我撰写的有关本地通知样本的文章。 以下是我在阅读有关通知的所有Apple文档之后并结合NodeJS的基本知识后制作的视频: 在应用程序上配置远程通知 要为您的iOS应用配置远程通知,您需要按顺序阅读以下Apple文章。 它描述了您需要的所有东西,除了服务器端特定编程语言的代码。 向APN注册您的应用 与APN进行通信,并接收可标识您的应用程序的唯一设备令牌。 注意 :要获取设备令牌,您还需要在设备上运行应用程序以及用户权限以显示通知(通过使用UNUserNotificationCenter对象的requestAuthorization(options:completionHandler:)方法)。 设置远程通知服务器 设置服务器以生成通知并将其推送到用户设备。 生成远程通知 使用JSON负载将通知发送到用户的设备。 向APN发送通知请求 将您的远程通知有效负载和设备令牌信息发送到APN。 建立与APN的基于证书的连接 通过在提供商服务器上安装证书来保护与APN的通信安全。 建立与APN的基于令牌的连接 使用无状态身份验证令牌,通过APN保护您的通信。 静默地将更新推送到您的应用程序 传递静默通知,并在用户设备的后台唤醒您的应用程序。 如果您停留在上述任何步骤,都可以在此处下载完整的iOS应用项目。 在服务器上配置远程通知 首先,您需要下载在NodeJS环境上运行的示例服务器项目。 该项目使用基于证书的连接,与基于令牌的连接相比,它部署起来更简单。 打开provider-server.js文件,您将看到以下内容: 您需要为该服务器的操作提供3件事: cert.pem文件的路径 key.pem文件的路径 设备令牌 要获取cert.pem和key.pem文件,您需要阅读本文。 我还使用node-apn节点包来支持发送通知。 你可以在这里读到它。