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 客户端向小程序发送信息。

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

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