Android 端02:小程序双向通道 -native2tiny| 学习笔记

简介: 快速学习 Android 端02:小程序双向通道 -native2tiny。

开发者学堂课程【mPaaS 小程序开发实战 - 教你如何独立运行小程序 :Android 端02:小程序双向通道 -native2tiny】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/741/detail/13128


Android 端02:小程序双向通道 -native2tiny

 

原生向小程序发送自定义事件

 

原生向小程序发送自定义事件指的是小程序启动的过程中,native 客户端有一些事件要发送给小程序,小程序接收到客户端的事件,定义一下这个自定义通道。

1. 小程序注册事件

注册示例如下:

1.my.on('nativeToTiny’ , (res)=>{

2.my.showToast({

3.type:’none‘,

4.content:JSON.stringify(res),

5.duration: 3000,

6.success: ()=>{

7.

8.},

9.fail: ()=>{

10.

11.},

12. complete: ()=>{

13.

14.};

15.});

16.})

通过调用 my.on事件名称来注册这个事件,在小程序示例 Demo 中,小程序本身的 app.js 中,在 onLaunch 的时候注册事件 my.on('nativeToTiny’,原生发向小程序方向的通道,接收到参数之后,直接调用 Toast,即 showToast。

2. 客户端发送事件

1. H5Service h5Service = MPFramework.getExternalService (H5Service.class.getName());

2. final H5Page h5Page = h5Service.getTopH5Page();

3. if (null != h5Page) {

4. JSONObject jo = new JSONObject();

5. jo.put( “key” , value);

6. //native 向小程序发送事件的方法

7. //第一个是事件名称,第二个是参数,第三个默认传 null

8. h5Page.getBridge().sendDataWarpToweb( “nativeToTiny" , jo, null);

9. }

客户端发送事件,通过拿到 H5Service,最上层的 Page,通过 h5Page,也就是一个小程序的页面,拿到Bridge,向它发送 nativeToTiny 这个事件,事件的参数就是 JSONObject jo = new JSONObject();

jo.put( “key” , value);随便写一个就可以,value 就是随便写一个数值,实战演示一下,首先还是用刚才小程序的Demo,当启动小程序的时候,写一个现场,写一个 for 循环,循环5次,每次 sleep 5秒,因为启动时可能会有拉包的加载时间,所以先让它睡5秒,要在主线程里发送事件,value 随便给一个 i,把当前循环次数发送给小程序端,直接让小程序运转起来,最终的样子是打开小程序,每隔5秒向小程序发送一次事件,把当前的事件发送给小程序,小程序拿到信息之后,在小程序的方法里面直接 show 一个 toast。

package com.mpaas.demo;

import ...

publie class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentViewe(R.layout.activity _main) ;

findViewById(R.id.btn).setOnclickListener(new View.OnClickListener(){

@Override

public void onClick(View view) {

MPNebula.startApp("2018080616290001");

new Thread( new Runnable(){

@Override

public void run() {

for(int index =0; index<5;index++) {

try {

Thread.sleep(5000);

} catch (InterruptedException e){

e.printStackTrace();

}

final int i = index;

runOnUiThread(new Runnable() {

@Override

public void run(){  

H5Service h5Service=MPFramework.getExternalService (H5Service.class.getName());

final H5Page h5Page = h5Service.getTopH5Page():

if (null != h5Page) {

JOSNObject jo = new JS0NObject();

jo.put (“key". i);

//native 向小程序发送事件的方法

//第一个是事件名称,第二个是参数,第三个默认传 null

h5Page.getBridge().sendDataWarpToweb( “nativeToTiny" , jo, null);

}

}

}).start();

}

});

}

}

看一下效果,等5秒钟左右,可以看到“key". value 是1,每隔5秒会发送一个事件过来,处理的方式是展示一个toast,一共会发5次,这个就是 native 客户端向小程序发送信息。

小程序需要监听一些内部事件的时候,可以通过这个通道来处理。

相关文章
|
9月前
|
Web App开发 小程序 前端开发
【产品上新】小程序新内核来了!提升安卓浏览器性能,支持WebRTC
【产品上新】小程序新内核来了!提升安卓浏览器性能,支持WebRTC
161 10
|
9月前
|
小程序
小程序学习笔记(7) -- 自定义组件案例
小程序学习笔记(7) -- 自定义组件案例
|
6月前
|
编解码 监控 API
惊艳登场!揭秘如何在Android平台上轻松玩转GB28181标准,实现多视频通道接入的超实用指南!
【8月更文挑战第14天】GB28181是公共安全视频监控联网的技术标准。本文介绍如何在Android平台上实现该标准下的多视频通道接入。首先准备开发环境,接着引入GB28181 SDK依赖并初始化SDK。实现设备注册与登录后,通过指定不同通道号请求多路视频流。最后,处理接收到的数据并显示给用户。此过程涉及视频解码,需确保应用稳定及良好的用户体验。
173 0
|
8月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的安卓的微博客系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的安卓的微博客系统附带文章和源代码部署视频讲解等
61 2
|
8月前
|
小程序
微信小程序学习笔记(入门篇)
微信小程序学习笔记(入门篇)
80 0
|
8月前
|
小程序 前端开发 Android开发
Android企业微信分享到小程序
Android企业微信分享到小程序
82 0
|
9月前
|
架构师 网络协议 算法
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
|
9月前
|
消息中间件 缓存 架构师
2024年阿里Android高级面试题分享,附学习笔记+面试整理+进阶书籍
2024年阿里Android高级面试题分享,附学习笔记+面试整理+进阶书籍
|
9月前
|
小程序 Java 数据挖掘
Java校园智慧管理云平台源码 小程序+android电子班牌系统
智慧校园技术架构 ❀后端:Java ❀框架:springboot ❀前端页面:vue +element-ui ❀小程序:小程序原生开发 ❀电子班牌:Java Android
245 0
|
9月前
|
小程序 JavaScript
小程序学习笔记(8) -- 小程序生命周期
小程序学习笔记(8) -- 小程序生命周期

热门文章

最新文章

  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    14
  • 2
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    28
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    34
  • 4
    Android历史版本与APK文件结构
    121
  • 5
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 6
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    23
  • 7
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    60
  • 8
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    37
  • 9
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    73
  • 10
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    121