了解MobileFirst iOS Push Dispatcher

时间:2016-05-12 18:05:05

标签: apple-push-notifications ibm-mobilefirst mobilefirst-server

我有一个混合的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信息中心文档中找到详细信息。

1 个答案:

答案 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属性在防火墙终止之前正常关闭套接字。