Parameters 如何使用int参数测试Trigger.io Android本机模块API?

Parameters 如何使用int参数测试Trigger.io Android本机模块API?,parameters,trigger.io,native-methods,Parameters,Trigger.io,Native Methods,我正在为Trigger.io编写一个本机Android模块。此方法在API.java中定义 public static void foo(final ForgeTask task, @ForgeParam("bar") final int bar) { System.out.println("foo called "+task.params); task.success(); } 当我运行inspector并在bar的文本框中输入5时,我

我正在为Trigger.io编写一个本机Android模块。此方法在API.java中定义

public static void foo(final ForgeTask task, @ForgeParam("bar") final int bar) {
    System.out.println("foo called "+task.params);
    task.success();
}
当我运行inspector并在
bar
的文本框中输入
5
时,我看到以下输出

称为带有“{”条的“test\u test.foo”:“5”}

带有“{”消息的“test\u test.foo”的
错误:“参数'bar'的类型错误,应为int”,“类型”:“意外的\u失败”,“子类型”:null}”

如果
bar
被声明为
long
double
,我会遇到类似的错误。然而,类似的iosapi工作正常

如何在Android inspector中测试此方法


编辑:我正在使用触发器平台v2.1.7(最新版本)。

现在,我已经定义了一个调用
foo
的无参数方法
foo5

public static void foo5(final ForgeTask task) {
    API.foo(task, 5);
}

它看起来像是在函数查找int时将5作为字符串发送过来。。如果触发器只将其作为字符串发送,您可能希望将int改为string,并在事实发生后将字符串转换为int。这不是最好的解决方案,但我认为如果trigger.io不给您以int形式发送内容的选项,那么这将起作用。这是因为html文本输入包含字符串,并且该字符串从未解析为int

选项1

您可以修复ForgeInspector/assets/src/js/inspector.js。更改:

$('#_run').click(function () {
    var module = $('#_module').val();
    var method = $('#_method').val();
    var params = {};

    $('.api_input input').each(function (i, x) {
        params[$(x).attr('id')] = $(x).val();
    });

    $('#_output').prepend('<pre class="alert alert-info">Called "'+module+'.'+method+'" with "'+JSON.stringify(params, null, '')+'"</pre>');
    forge.internal.call(module+'.'+method, params, function () {
        $('#_output').prepend('<pre class="alert alert-success">Success for "'+module+'.'+method+'" with "'+JSON.stringify(arguments[0], null, '')+'"</pre>');
    }, function () {
        $('#_output').prepend('<pre class="alert alert-error">Error for "'+module+'.'+method+'" with "'+JSON.stringify(arguments[0], null, '')+'"</pre>');
    })
});
$('##_运行')。单击(函数(){
var module=$('##_module').val();
var method=$('##_method').val();
var params={};
$('.api_input')。每个(函数(i,x){
参数[$(x).attr('id')]=$(x).val();
});
$('#_output').prepend('Called“'+module+'.+method+'”和“'+JSON.stringify(params,null,)+”)”);
forge.internal.call(模块+'..+方法,参数,函数(){
$('#_output').prepend(“'+module+'.+method+'”的成功与“'+JSON.stringify(参数[0],null,)+”)”);
},函数(){
$('.#_output').prepend(“'+module+'.+method+'”的错误加上“'+JSON.stringify(参数[0],null,)+”)”);
})
});

$('##_运行')。单击(函数(){
var module=$('##_module').val();
var method=$('##_method').val();
var paramTypes=模块[模块][方法];
var params={};
$('.api_input')。每个(函数(i,x){
开关(paramTypes[$(x).attr('id')].type){
大小写“int”:参数[$(x).attr('id')]=parseInt($(x).val());break;
大小写“long”:参数[$(x).attr('id')]=parseInt($(x).val());break;
大小写“double”:参数[$(x).attr('id')]=parseFloat($(x).val());break;
默认值:params[$(x).attr('id')]=$(x).val();
}
});
$('#_output').prepend('Called“'+module+'.+method+'”和“'+JSON.stringify(params,null,)+”)”);
forge.internal.call(模块+'..+方法,参数,函数(){
$('#_output').prepend(“'+module+'.+method+'”的成功与“'+JSON.stringify(参数[0],null,)+”)”);
},函数(){
$('.#_output').prepend(“'+module+'.+method+'”的错误加上“'+JSON.stringify(参数[0],null,)+”)”);
})
});
这将把值转换为正确的类型

选项2

您还可以编写一个测试API方法的脚本

$('#_run').click(function () {
    var module = $('#_module').val();
    var method = $('#_method').val();
    var paramTypes = modules[module][method];
    var params = {};

    $('.api_input input').each(function (i, x) {
        switch (paramTypes[$(x).attr('id')].type) {
            case 'int': params[$(x).attr('id')] = parseInt($(x).val()); break;
            case 'long': params[$(x).attr('id')] = parseInt($(x).val()); break;
            case 'double': params[$(x).attr('id')] = parseFloat($(x).val()); break;
            default: params[$(x).attr('id')] = $(x).val();
        }
    });

    $('#_output').prepend('<pre class="alert alert-info">Called "'+module+'.'+method+'" with "'+JSON.stringify(params, null, '')+'"</pre>');
    forge.internal.call(module+'.'+method, params, function () {
        $('#_output').prepend('<pre class="alert alert-success">Success for "'+module+'.'+method+'" with "'+JSON.stringify(arguments[0], null, '')+'"</pre>');
    }, function () {
        $('#_output').prepend('<pre class="alert alert-error">Error for "'+module+'.'+method+'" with "'+JSON.stringify(arguments[0], null, '')+'"</pre>');
    })
});