当前位置: 首页 > article >正文

uniapp使用uts插件调用原生API

uniapp使用uts插件调用原生API

  • 背景
  • 思路
  • 代码实现
  • 尾巴

背景

在APP平台,某些功能由于uniapp限制,或者性能问题需要使用原生API来实现。uniapp很早就提供了原生语言插件功能,后台随着uniapp-x的推出,又提供了uts插件的方式来调用原生平台API。相比原生语言插件,uts插件可以直接使用更为熟悉的ts语法,不用在原生IEDA(android studio或xcode)中进行繁琐的配置。之前写过一篇uniapp原生插件开发(Android),今天我们用uts来实现一个类似调用原生安卓Toast功能的插件。

思路

1、使用HbuilderX新建一个uniapp项目,名字随意取就行。
2、在项目根目录下新建uni_modules目录,这个目录是用来存放我们uts插件的。
3、新建一个插件文件夹,我这里插件名称是my-toast,然后按照下面图片层级依次建好相关目录和文件。
在这里插入图片描述
注:uts插件除了插件名可以自定义,其他都需要按照上图中的命名,不要随意更改。两个.md文件非必须,可以不用。

代码实现

首先是package.json是插件相关的配置文件,可以参考下我的

{
  "id": "my-toast",
  "displayName": "my-toast",
  "version": "1.0.0",
  "description": "my-toast",
  "keywords": [
    "my-toast"
],
  "repository": "",
  "engines": {
    "HBuilderX": "^3.6.8"
  },
  "dcloudext": {
    "type": "uts",
    "sale": {
      "regular": {
        "price": "0.00"
      },
      "sourcecode": {
        "price": "0.00"
      }
    },
    "contact": {
      "qq": ""
    },
    "declaration": {
      "ads": "",
      "data": "",
      "permissions": ""
    },
    "npmurl": ""
  },
  "uni_modules": {
    "dependencies": [],
    "encrypt": [],
    "platforms": {
      "cloud": {
        "tcb": "u",
        "aliyun": "u",
        "alipay": "u"
      },
      "client": {
        "Vue": {
          "vue2": "u",
          "vue3": "u"
        },
        "App": {
          "app-android": "u",
          "app-ios": "u"
        },
        "H5-mobile": {
          "Safari": "u",
          "Android Browser": "u",
          "微信浏览器(Android)": "u",
          "QQ浏览器(Android)": "u"
        },
        "H5-pc": {
          "Chrome": "u",
          "IE": "u",
          "Edge": "u",
          "Firefox": "u",
          "Safari": "u"
        },
        "小程序": {
          "微信": "u",
          "阿里": "u",
          "百度": "u",
          "字节跳动": "u",
          "QQ": "u",
          "钉钉": "u",
          "快手": "u",
          "飞书": "u",
          "京东": "u"
        },
        "快应用": {
          "华为": "u",
          "联盟": "u"
        }
      }
    }
  }
}

然后是config.json,这里只配置了android的minSdkVersion。

{
  "minSdkVersion": "21"
}

接下来是index.uts,是插件默认入口。

//这里要导入原生的包
import Context from 'android.content.Context';
import Toast from 'android.widget.Toast';
export function showToast(msg: String) : void {
	const context = UTSAndroid.getAppContext() as Context
	Toast.makeText(context, msg, Toast.LENGTH_SHORT).show()
}

AndroidManifest.xml暂时没用到。
最后新建一个vue页面,然后导入插件的showToast,然后点击调用。

<template>
	<view class="content">
		<image class="logo" 
			src="/static/logo.png"
			@click="handleToast"></image>
	</view>
</template>

<script>
	//导入插件中的函数
	import { 
		showToast
	} from "@/uni_modules/my-toast"
	export default {
		data() {
			return {
			}
		},
		onLoad() {
		},
		methods: {
			//调用插件中的原生API
			handleToast(){
				showToast('test uts plugin 1234')
			}
		}
	}
</script>

<style>
	.content {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
	}

	.logo {
		height: 200rpx;
		width: 200rpx;
		margin-top: 200rpx;
		margin-left: auto;
		margin-right: auto;
		margin-bottom: 50rpx;
	}

	.text-area {
		display: flex;
		justify-content: center;
	}

	.title {
		font-size: 36rpx;
		color: #8f8f94;
	}
</style>

看下效果:
在这里插入图片描述

尾巴

到这里一个最简单的uts插件就完成了。不仅是安卓,还有ios,小程序等都可以使用uts插件来调用原生平台的API,前提是要按官方的写法来,具体可以参考官方文档。下次我们使用uts来实现一个稍微复杂点的插件。

有问题可以给我留言,希望能帮助到有需要的人。如果你喜欢我的文章欢迎给我点赞,谢谢!


http://www.kler.cn/a/534885.html

相关文章:

  • Ubuntu部署Deepseek-R1模型(8b)
  • 2.6-组合博弈入门
  • Ubuntu 20.04配置网络
  • 通过C/C++编程语言实现“数据结构”课程中的链表
  • Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell 替代】
  • 记录一次-Rancher通过UI-Create Custom- RKE2的BUG
  • 鸿蒙 Next 开发实践:使用 WebView 适配移动端网站
  • JAVA异步的UDP 通讯-客户端
  • 云端IDE如何重定义开发体验
  • VS Code Python 开发环境配置
  • Linux环境下的事件驱动力量:探索Libevent的高性能IO架构
  • Java 中接口和抽象类的异同
  • Hive之数据操作DML
  • 神经网络常见激活函数 3-ReLU函数(修正线性单元)
  • 网络安全--边界安全-防火墙
  • Java 中的 Spring 框架,以及 Spring Boot 和 Spring Cloud 的区别?
  • 2025.2.6总结
  • opentelemetry-collector 配置prometheus
  • ssh中公钥和私钥怎么生成
  • Markdown介绍与语法
  • (2024|NEJM,多模态医学应用,Med-PaLM M,MultiMedBench,医学问答)迈向通用生物医学 AI
  • 二手房屋数据分析可视化系统-python
  • Redis学习(hmdp-缓存优化模块)
  • 自定义多功能输入对话框:基于 Qt 打造灵活交互界面
  • 蓝桥杯之c++入门(六)【string】
  • PAT甲级1052、Linked LIst Sorting