-1

我们可以在 IBM Mobilefirst 中使用触发器调用 Http Adapters。

我正在研究基于位置的服务和推送通知集成部分,例如当使用进入 Geofench 区域时,我们需要调用推送适配器向移动设备发送通知。

地理围栏代码:

dwellArea: { // alert when we have stayed in the vicinity for 3 seconds
                        type: "DwellInside",
                        circle: {
                            longitude: pos.coords.longitude,
                            latitude: pos.coords.latitude,
                            radius: 50
                        },
                        dwellingTime: 3000,
                        callback: function() {
                            alert('Still in the vicinity');

这里可以调用 Http Adapter 调用即 push Adapter 见下图:

                            WL.Client.transmitEvent({ event: 'dwell inside area'}, true);
                        }
                    }

推送通知代码:

var invocationData = {adapter : "PushAdapter",
                                       procedure : "submitNotification",
                                       parameters : [ "Vinod", "Hello This is Push notification" ]
                                     };
                            var options = {
                                    onSuccess : onGetAccountsSuccess,
                                    onFailure : onGetAccountsFailed,
                                    timeout : 30000
                                };
                            WL.Client.invokeProcedure(invocationData, options);

我们可以直接在 Geofench 编码中的这个回调中直接调用这个推送通知代码,还是有任何替代解决方案。

参考链接:

地理围栏: https ://developer.ibm.com/mobilefirstplatform/documentation/getting-started-6-3/advanced-topics/location-services-hybrid-applications/

推送通知: https ://developer.ibm.com/mobilefirstplatform/documentation/getting-started-6-3/notifications/push-notifications-hybrid-applications/#whatIsPushNotifications

4

2 回答 2

1

我不清楚这个问题......为什么不创建类似的东西

function sendNotification() {
   // your push code...
}

而不是alert()使用sendNotification();?
你试过吗?

于 2015-12-09T05:06:20.040 回答
1

你在这里有不同的选择。如果您要做的只是传输一个事件,那么您不需要声明回调。您可以在触发器定义中添加一个事件;例如:

      eventToTransmit: { 
         event: { 
            field1: "data1",
            field2: ["data2", "data3"]
         },
         transmitImmediately: true 
      }

请注意,这将尝试立即传输事件(以及任何以前未传输的事件)。如果您有动态数据,那么您将需要一个回调并改用 WL.Client.transmitEvent API。在这两种情况下,如果有通信问题,它会根据事件传输策略重试。您将在服务器端适配器中处理该事件。请注意,使用事件允许您单独更新服务器端的逻辑,而无需更新客户端逻辑。您还可以处理来自多个不同适配器的事件,而无需它们相互调用。

或者,您可以执行调用以调用适配器中的过程。在这种情况下,如果有任何通信问题,您将需要声明一个失败处理程序并在那里实现任何重试逻辑。

于 2015-12-09T08:08:33.760 回答