了解 MobileFirst iOS 推送调度程序

Understanding MobileFirst iOS Push Dispatcher

我有一个混合 MobileFirst 应用程序。计划集成推送通知。该方法是后端将调用具有数组对象的适配器,该对象将具有用于推送通知的用户 ID 和消息。数组计数将为 100。每 5 分钟后端将调用此适配器,数组中有 100 个计数。

适配器将解析数组并获取 getUserNotificationSubscription,然后为数组中的每个用户 ID 调用 notifyAllDevices。

数组对象如下所示

{ 

"notifications": [ 
    {
              "userId": "userid",
               "message": "Push Notification Message",
               "notificationType": "Type of Notification",
               "lineOfbusiness": "1",
               "issueDate":"",
               "uniqueIdentifier":"useruidd"
   }
            ]
  }  

我的理解是,一旦您调用 notifyAllDevices,API 将在 "Notification State Database" 中添加通知,并且 iOS Dispatcher 处理 APNS 服务器和 Worklight Server 之间的连接。

我在 Apple APNS 文档中阅读了有关管理与 APNS 服务器连接的最佳实践的说明,

Keep your connections with APNs open across multiple notifications; don’t repeatedly open and close connections. APNs treats rapid connection and disconnection as a denial-of-service attack. You should leave a connection open unless you know it will be idle for an extended period of time—for example, if you only send notifications to your users once a day it is ok to use a new connection each day. You can establish multiple connections to APNs servers to improve performance. When you send a large number of remote notifications, distribute them across connections to several server endpoints. This improves performance, compared to using a single connection, by letting you send remote notifications faster and by letting APNs deliver them faster

我想了解此 MobileFirst iOS 调度程序的工作原理。它遵循了 Apple 建议的最佳实践?无法在 IBM 信息中心文档中找到深入的信息。

IBM MobileFirst 遵循 Apple 建议的最佳实践。 IBM MobileFirst 使用 APNS 创建持久套接字连接。

为了提高性能,MobileFirst 默认创建 3 个与 APNS 的持久套接字连接。用户可以使用 JNDI 属性 :

调整该值

push.apns.connections

持久连接未被 IBM MobileFirst 关闭。但是,如果用户希望优雅地关闭它(如果空闲时间延长),他们可以使用 JNDI 属性

push.apns.connectionIdleTimeout

此外,如果有外部因素(例如防火墙)关闭了使用 APNS 打开的连接,MobileFirst 会重新创建连接(默认情况下在 JNDI 或 3 中定义)并通过这些连接发送远程通知。如果用户的防火墙设置被配置为关闭空闲套接字连接,那么他们可以使用 idletimeout JNDI 属性 在防火墙终止套接字之前优雅地关闭它们。