与 Kodular 和 App Inventor 应用通信
导出为 HTML,在 WebViewer 中打开,与应用交换事件、请求和数据。
准备工作
- 添加 应用(Kodular / App Inventor) 扩展并编写你的作品。
- 导出为 HTML(Pro 套餐),把文件放到应用的 媒体(Media)中(或放在一个 https 地址上)。
- 在应用中,使用 WebViewer 打开页面:
file:///android_asset/game.html(App Inventor)或 Kodular 中的媒体路径。可以传递参数:game.html?level=2。
作品 → 应用
- 向应用发送文字 … 和 发送事件 … 带数据 … 会触发 WebViewer.WebViewStringChange 事件。读取
value属性(文字或 JSON)。 - JSON 格式:
{"tipo":"evento","nome":"points","dados":10}、{"tipo":"acao","acao":"toast","valor":"Hi"}和{"tipo":"pedido","id":3,"nome":"tinydb_ler","dados":{"tag":"record"}}。 - 在应用中,把文字转换成字典(JsonTextDecode / make dictionary from JSON),再根据 tipo 和 acao 决定做什么:
toast、vibrar、abrir_link、compartilhar、falar、copiar、notificacao、tela_ligada、orientacao、abrir_tela、fechar、tinydb_salvar。
应用 → 作品
- WebViewer.RunJavaScript(App Inventor)或 Evaluate JavaScript(Kodular):
blocosiaApp('back')或blocosiaApp('coin', 5)会触发 当应用发送事件 … 时。 - 回答请求:
blocosiaApp.responder(3, 'value')(使用同一个 id)。 - 或者修改 WebViewString 属性:普通文字会变成一条消息;
{"nome":"x","dados":1}会变成一个事件;{"resposta":3,"valor":…}会回答一个请求。
小贴士
- 手机返回键:在 Screen.BackPressed 中调用
blocosiaApp('back'),然后在作品里处理它。 - 编辑器里没有应用:使用 模拟应用发送事件 … 来测试。
- 我在应用里吗? 可以帮你隐藏只在手机上才有意义的按钮。