我有一个混合的MobileFirst应用程序。计划集成推送通知。方法是后端将调用具有数组对象的适配器,该对象将具有用户标识和用于推送通知的消息。数组计数将为100.每5分钟后端将调用此适配器,数组中有100个计数。
Adapter将解析数组并获取getUserNotificationSubscription,然后为数组中的每个用户id调用notifyAllDevices。
Array Object如下所示
{
"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服务器连接的最佳实践的说明,
在多个通知中保持与APN的连接;不要反复打开和关闭连接。 APN将快速连接和断开视为拒绝服务攻击。您应该保持连接处于打开状态,除非您知道它将在一段时间内处于空闲状态 - 例如,如果您每天只向用户发送一次通知,则可以每天使用新连接。您可以与APN服务器建立多个连接以提高性能。发送大量远程通知时,请将它们分配到多个服务器端点的连接。与使用单个连接相比,通过让您更快地发送远程通知并让APN更快地提供它们,这可以提高性能
我想了解这款MobileFirst iOS Dispatcher的工作原理。它遵循Apple建议的最佳实践吗?无法在IBM信息中心文档中找到详细信息。
答案 0 :(得分:2)
IBM MobileFirst遵循Apple建议的最佳做法。 IBM MobileFirst通过APNS创建持久套接字连接。
为了提高性能,MobileFirst默认使用APNS创建3个持久套接字连接。用户可以使用JNDI属性调整此值:
push.apns.connections
IBM MobileFirst未关闭持久连接。但是,如果用户希望正常关闭它(如果有延长的空闲时间),他们可以使用JNDI属性
push.apns.connectionIdleTimeout
此外,如果有外部因素(如防火墙)关闭与APNS打开的连接,MobileFirst将重新创建连接(默认情况下在JNDI或3中定义)并通过这些连接发送远程通知。如果用户的防火墙设置配置为关闭空闲套接字连接,那么他们可以使用idletimeout JNDI属性在防火墙终止之前正常关闭套接字。