我们可以使用IBM Mobilefirst中的触发器调用Http Adapters。
我正在开发基于位置的服务和推送通知集成部分,例如当使用进入Geofench区域时,我们需要调用推送适配器向移动设备发送通知。
Geofenche代码:
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编码的回调中直接调用此推送通知代码,还是有替代解决方案。
参考链接:
Pushnotification: https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-6-3/notifications/push-notifications-hybrid-applications/#whatIsPushNotifications
答案 0 :(得分:1)
我不清楚这个问题......为什么不创建像
这样的东西function sendNotification() {
// your push code...
}
而不是alert()
使用sendNotification();
?
你试过了吗?
答案 1 :(得分:1)
这里有不同的选择。如果您要做的只是传输事件,那么您不需要声明回调。您只需在触发器定义中添加一个事件即可;例如:
eventToTransmit: {
event: {
field1: "data1",
field2: ["data2", "data3"]
},
transmitImmediately: true
}
请注意,这将尝试立即传输事件(以及任何以前未传输的事件)。如果您有动态数据,则需要回调并使用WL.Client.transmitEvent API。在这两种情况下,如果存在通信问题,它将根据event transmission policy重试。您将在服务器端适配器中处理该事件。请注意,使用事件可以在服务器端单独更新逻辑,而无需更新客户端逻辑。您还可以处理来自多个不同适配器的事件,而无需彼此进行调用。
或者,您可以执行调用以调用适配器中的过程。在这种情况下,如果存在任何通信问题,则需要声明失败处理程序并在那里实现任何重试逻辑。