BlocosIA Wiki Editor

与 Kodular 和 App Inventor 应用通信

导出为 HTML,在 WebViewer 中打开,与应用交换事件、请求和数据。

准备工作

  1. 添加 应用(Kodular / App Inventor) 扩展并编写你的作品。
  2. 导出为 HTML(Pro 套餐),把文件放到应用的 媒体(Media)中(或放在一个 https 地址上)。
  3. 在应用中,使用 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'),然后在作品里处理它。
  • 编辑器里没有应用:使用 模拟应用发送事件 … 来测试。
  • 我在应用里吗? 可以帮你隐藏只在手机上才有意义的按钮。