信标触发actionPayload可用动作?

时间:2015-05-19 13:59:44

标签: ibeacon ibm-mobilefirst

我刚开始学习MFP中的信标,并对触发器的actionPayload有疑问。知识中心提供了带有

的JSON示例

" actionPayload" :{" alert" :"利用房屋贷款的最低利率仅为7.5%!"}

我试图意识到:

  • 除警报外,有哪些可用的操作?

  • 如何为触发器定义回调函数?

提前致谢!

1 个答案:

答案 0 :(得分:1)

如果您在iOSNativeiBeacons/iOSNativeiBeaconsLibrary/WLBeaconsLocationManager.m中使用以下函数,则beacon-trigger的actionPayload可以是本地警报,也可以是对适配器过程的调用。接下来给出适配器调用的详细信息。

-(void) fireTriggerAction:(WLBeaconTrigger *)beaconTrigger forWLBeacon:(WLBeacon *)wlBeacon
{
    NSString *branchName = [wlBeacon.customData objectForKey:@"branchName"];
    NSString *alertMessage = [beaconTrigger.actionPayload objectForKey:@"alert"];
    if(alertMessage != nil) {
        alertMessage = [alertMessage stringByReplacingOccurrencesOfString:@"$branchName" withString:branchName];
        NSString *alertTitle = [WLBeaconTrigger beaconTriggerTypeToString:beaconTrigger.triggerType];
        [self sendLocalNotification:alertTitle withMessage:alertMessage];
    } else {
        NSString *adapterName = [beaconTrigger.actionPayload objectForKey:@"adapterName"];
        NSString *procedureName = [beaconTrigger.actionPayload objectForKey:@"procedureName"];
        NSString *userName = [self getUserName];
        [self invokeAdapterProcedure:adapterName withProcedure:procedureName forUser:userName forBranch:branchName];
    };
}

在启用信标的银行应用程序场景中,假设我们想要在高价值客户进入分支机构的贷款部分时通知银行分行经理,然后可以注册跟随触发器并与贷款部分信标相关联。 / p>

信标触发:

{
    "triggerName" : "EnterLoanSection",
    "triggerType" : "Enter",
    "proximityState" : "Near",
    "actionPayload" : {
        "adapterName" : "BeaconsAdapter",
        "procedureName" : "sendNotificationToBranchManager"
    }
}

上面触发器中的actionPayload指定在进入相关信标附近时应调用适配器sendNotificationToBranchManager的过程BeaconsAdapter。该过程将在适配器文件中定义如下:

BeaconsAdapter.xml:

<procedure name="sendNotificationToBranchManager" />    

BeaconsAdapter-impl.js:

function sendNotificationToBranchManager(userName, branchName) {
    var notification = {};
    notification.message = {};
    notification.message.alert = "HNI customer, " + userName + ", is in loan-section of " + branchName + " branch.";
    notification.settings = {};

    WL.Server.sendMessage("ManagerApp", notification);

    return {
        result : "Notification sent"
    };
}

关于“如何为触发器定义回调函数?”,您可以修改-(void) fireTriggerAction:(WLBeaconTrigger *)beaconTrigger forWLBeacon:(WLBeacon *)wlBeacon中的iOSNativeiBeacons/iOSNativeiBeaconsLibrary/WLBeaconsLocationManager.m