我开发了一个自定义本机模块,以便在我的应用程序中保持屏幕清醒。
使用forgeInspector测试模块后,通过trigger.io工具包将其添加到我的应用程序中,此错误显示在控制台日志中:
[DEBUG] Returned: {"content":{"message":"Method not supported on this platform","type":"UNAVAILABLE","subtype":null},"callid":"CE53E970-807C-4179-8F02-BCAF4950A0AB","status":"error"}
使用JavaScript,我通过以下方式调用模块:
forge.stayawake.showAlert('test alert box',function(){alert('success');},function(e){ alert(e); });
我的module.js是:
forge.stayawake = {
showAlert: function (text, success, error) {
forge.internal.call('stayawake.showAlert', {text: text}, success, error);
}
};
io.trigger.forge.android.modules.stayawake读取
package io.trigger.forge.android.modules.stayawake;
import io.trigger.forge.android.core.ForgeApp;
import io.trigger.forge.android.core.ForgeParam;
import io.trigger.forge.android.core.ForgeTask;
import android.app.AlertDialog;
import android.content.DialogInterface;
public class API {
public static void showAlert(final ForgeTask task, @ForgeParam("text") final String text) {
if (text.length() == 0) {
// Error if there is no text to show
task.error("No text entered");
return;
}
task.performUI(new Runnable() {
public void run() {
AlertDialog.Builder builder = new AlertDialog.Builder(ForgeApp.getActivity());
builder.setMessage(text).setCancelable(false).setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
task.success();
}
});
AlertDialog alert = builder.create();
alert.show();
}
});
}
}
作为一个控制测试,为了确保模块实际上正确加载,我尝试将“stayawake.set”重命名为“foo.test”,并得到完全相同的消息。
我还将所有内容还原为初始下载的检查员。如果我在我的主应用程序中包含它并调用默认的“showAlert”,我仍然会收到错误Method not supported on this platform
。再次,使用检查员进行测试时一切正常。
我已经按照trigger.io上的所有说明进行操作,但仍然没有。
我只是没有正确或方式地调用我的模块吗?
答案 0 :(得分:2)
在同样的情况下收到同样的错误后,我意识到我错过了该模块的Android构建步骤:
https://trigger.io/docs/current/api/native_modules/the_basics.html
构建/打包您的模块
Android
构建和导出模块 要包含在实际的Forge应用中:
右键单击
src
文件夹,然后选择导出...使用向导将文件夹的内容导出为JAR
您必须在JAR中包含生成的类文件和资源(不需要Java源代码)
将该jar保存为模块文件夹中的
android/module.jar
。 (module_name/module/android/module.jar
)
以下是我的设置的屏幕截图:
然后我就可以上传模块并将其成功包含在我的项目中,而不会出现上述错误。