提交 00bf7308 编写于 作者: D DCloud_LXH

fix: 错误链接

上级 8658a603
......@@ -145,7 +145,7 @@ channelManager.setPushChannel({
})
```
* uni-app x 的push模块仅支持uni-push2,不再支持uni-push1。但这不意味着强绑uniCloud的付费行为。而是DCloud的所有云服务都将统一纳入到uniCloud体系管理,开发者在开通uni-push2后,也可以拿到mastersecret,然后在自己的服务器去直接连接个推服务器。
* uni-push是一个独立的模块,在标准基座中并不包含。开发push需要首先编写push相关代码,然后打包自定义基座,根据摇树规则,打出的自定义基座才会包含push模块。详见[摇树](../manifest.md#treeShaking)
* uni-push是一个独立的模块,在标准基座中并不包含。开发push需要首先编写push相关代码,然后打包自定义基座,根据摇树规则,打出的自定义基座才会包含push模块。详见[摇树](../collocation/manifest-modules.md#treeshaking)
* 创建本地通知栏,理论上可以和个推的服务无关。但目前也都包含在push模块里了。如果您不需要服务器推送,只需要本地创建通知栏,也需要打包push模块才行。
* 部分手机创建本地通知时,App如果在后台状态,点击通知消息并不会拉起App,原因是厂商增加了后台弹窗权限,需要用户手动打开此权限。
* 获取手机端app是否拥有push权限,请使用API [uni.getAppAuthorizeSetting](get-app-authorize-setting.md)
......@@ -35,7 +35,7 @@ uni-app x 不再提供内置模块选择,而是提供了摇树机制自动选
uni-app x 的权限配置,移入了[AndroidManifest.xml](https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-android.html#permissions)中。
使用[uni内置模块](#utsmodules)时,云端打包会自动添加模块需要的Android权限,不需要在[AndroidManifest.xml](https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-android.html#permissions)中配置。
使用[uni内置模块](./manifest-modules.md#utsmodules)时,云端打包会自动添加模块需要的Android权限,不需要在[AndroidManifest.xml](https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-android.html#permissions)中配置。
- HBuilderX3.97+版本标准基座已经包含了所有Android权限,在 uvue 页面中直接通过 uts 调用需要权限的 Android 系统 API 时,使用标准基座真机运行可直接通过[UTSAndroid.requestSystemPermission](../uts/utsandroid.md#requestsystempermission)申请;
- 使用自定义基座则需要在项目的[AndroidManifest.xml](https://uniapp.dcloud.io/tutorial/app-nativeresource-android.html#permissions)中配置要使用的权限,重新提交云端打包。
......
......@@ -267,5 +267,5 @@ view.takeSnapshot({
完整示例代码参考[hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/element-takesnapshot/element-takesnapshot.uvue)
* 截图会在应用沙盒目录的cache目录产生临时文件,位置[详见](file-system-spec.md#cache)
* app端如需主动删除临时文件,使用[uni.getFileSystemManager](get-file-system-manager.md)
\ No newline at end of file
* 截图会在应用沙盒目录的cache目录产生临时文件,位置[详见](../api/file-system-spec.md#cache)
* app端如需主动删除临时文件,使用[uni.getFileSystemManager](../api/get-file-system-manager.md)
\ No newline at end of file
......@@ -7,5 +7,5 @@
* [uts中使用uni api](uts-uni-api.md)
* [Android平台uts开发指南](uts-for-android.md)
* [iOS平台uts开发指南](uts-for-ios.md)
* [使用CocoaPods依赖](uts-ios-cocoapods.md)
* [使用CocoaPods依赖](uts-ios-cocoapods.md)
* [插件作者专区](https://uniapp.dcloud.net.cn/plugin/publish.html)
......@@ -23,7 +23,7 @@ UTS组件,是UTS插件的一个分支。UTS插件提供了原生API的扩展
继续阅读文档前,开发者需要了解以下前置条件:
- 了解 [uts语法](/uts/)[uts原生插件](uts-plugin.md)
- 了解 [Vue组件](../tutorial/vue3-components.md)
- 了解 [Vue组件](https://uniapp.dcloud.net.cn/tutorial/vue3-components.html)
## UTS组件简介
......@@ -620,7 +620,7 @@ NVUpdateStyles(styles: Map<String, any>){
}
}
//原生提供以下属性或方法的实现
//原生提供以下属性或方法的实现
export default {
/**
* 组件名称,也就是开发者使用的标签
......@@ -664,7 +664,7 @@ NVUpdateStyles(styles: Map<String, any>){
}
}
},
immediate: false //创建时是否通过此方法更新属性,默认值为false
immediate: false //创建时是否通过此方法更新属性,默认值为false
},
},
/**
......@@ -697,7 +697,7 @@ NVUpdateStyles(styles: Map<String, any>){
},
/**
* 对应平台的view载体即将被创建,对应前端beforeMount
* 对应平台的view载体即将被创建,对应前端beforeMount
* [可选实现]
*/
NVBeforeLoad() {
......@@ -706,12 +706,12 @@ NVUpdateStyles(styles: Map<String, any>){
/**
* 创建原生View,必须定义返回值类型
* 开发者需要重点实现这个函数,声明原生组件被创建出来的过程,以及最终生成的原生组件类型
* (Android需要明确知道View类型,需特殊校验)
* (Android需要明确知道View类型,需特殊校验)
* todo 补充IOS平台限制
* [必须实现]
*/
NVLoad(): LinearLayout {
//必须实现
//必须实现
let contentLayout = new LinearLayout(this.$androidContext)
let button = new Button(this.$androidContext)
button.setText("点击触发");
......@@ -721,11 +721,11 @@ NVUpdateStyles(styles: Map<String, any>){
return contentLayout
}
}
</script>
<style>
</style>
```
......@@ -829,14 +829,14 @@ NVUpdateStyles(styles: Map<String, any>){
<uts-hello-view ref="helloView" buttonText="点击按钮内容" style="width:375px;height: 375px;background-color: aqua;"></uts-hello-view>
<button @tap="callComponentMethod">调用组件的方法</button>
</div>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
......@@ -848,7 +848,7 @@ NVUpdateStyles(styles: Map<String, any>){
// (this.$refs["helloView"] as UtsHelloViewElement).doSth('param doSth');
},
}
}
</script>
......
......@@ -36,7 +36,7 @@
虽然 UTS 和 koltin 在数据类型上基本保持了一致,但是在部分场景下,还是会有差异,在此特别说明
原则上:
原则上:
**数据类型以UTS 内置的类型为准, 各原生平台都会对其自动适配。**
......@@ -51,7 +51,7 @@
但是当开发者重写 `Service` 组件`onStartCommand` 方法时,`Android` API要求 明确要求后两个参数 必须为Int
原生开发环境中,应该这样写:
```kotlin
......@@ -75,7 +75,7 @@
#### 举例二:`MutableList`
`MutableList``android`平台 特有的数据类型,一般场景下,可以使用UTS中内置类型 `Array` 替代
但是在 调用`onAppActivityRequestPermissionsResult` 函数监听权限申请结果时,明确要求使用此类型的参数
......@@ -85,7 +85,7 @@
```kotlin
onAppActivityRequestPermissionsResult(fun(requestCode: Number, permissions: MutableList<String>, grantResults: MutableList<Number>){
});
```
......@@ -96,7 +96,7 @@ onAppActivityRequestPermissionsResult(fun(requestCode: Number, permissions: Muta
```ts
onAppActivityRequestPermissionsResult((requestCode: number,permissions: MutableList<string>,grantResults: MutableList<number>) => {
});
```
......@@ -120,9 +120,9 @@ class XXX{
### 2.4 线程环境差异
UTS环境中,默认是没有线程概念的。
UTS环境中,默认是没有线程概念的。
如果需要执行异步任务,建议通过内置函数`UTSAndroid.getDispatcher("io")`执行
如果需要执行异步任务,建议通过内置函数`UTSAndroid.getDispatcher("io")`执行
[文档地址](https://doc.dcloud.net.cn/uni-app-x/uts/utsandroid.html#getdispatcher)
......@@ -152,7 +152,7 @@ UTSAndroid.getDispatcher("main").async(function(_){
}
callback(true,"pass")
},null)
},null)
},null)
```
......@@ -182,7 +182,7 @@ AndroidManifest.xml示例:
```xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
// 注意:这里是插件的包名而不是应用的包名
package="io.dcloud.uni_modules.utsNativepage">
// 配置权限
......@@ -228,7 +228,7 @@ uts-nativepage -> uts.sdk.modules.utsNativepage
示例文件在hello uts中的位置:
~\uni_modules\uts-nativepage\utssdk\app-android\res
~\uni_modules\uts-nativepage\utssdk\app-android\res
除了这里列出的layout、values目录外,还支持anim等所有android标准资源目录
......@@ -430,7 +430,7 @@ import { UTSAndroid } from "io.dcloud.uts";
```
获取指定插件资源的运行期绝对路径
```ts
// [示例]获取指定资源路径
// 得到文件运行时路径: `/storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/__UNI__3732623/www/uni_modules/test-uts-static/static/logo.png`
......@@ -468,7 +468,7 @@ onAppTrimMemory 对应的反注册函数
UTSAndroid.offAppTrimMemory()
// 移除指定监听
UTSAndroid.offAppTrimMemory((level:Number) => {
});
```
......@@ -685,7 +685,7 @@ UTSAndroid.offAppActivityBack(() => {
> HBuilderX 3.6.8+
App 的 activity 启动其他activity的回调结果监听 对应原生的 [onActivityResult](!https://developer.android.com/training/basics/intents/result)
App 的 activity 启动其他activity的回调结果监听 对应原生的 [onActivityResult](https://developer.android.com/training/basics/intents/result)
需要特别注意的是 `requestCode` 参数,这个参数用于区别 不同的请求来源,开发者应该只处理自己发起请求
......@@ -700,7 +700,7 @@ UTSAndroid.onAppActivityResult((requestCode: Int, resultCode: Int, data?: Intent
}else{
// 别的代码发起的请求,不要处理
}
});
```
......@@ -737,9 +737,9 @@ App 的 activity 获得权限请求结果的回调
UTSAndroid.onAppActivityRequestPermissionsResult((requestCode: number,
permissions: Array<string>,
grantResults: Array<number>) => {
console.log(grantResults);
console.log(permissions);
console.log(permissions);
console.log(requestCode);
});
......@@ -783,14 +783,14 @@ UTSAndroid.getUniActivity()!.getWindow().getDecorView();
UTS环境中对原生的生命周期进行了封装和简化,用户不需要关心 除了activity 以外的更多原生细节。
只需要了解本章节中列出的 activity相关生命周期即可。即 在UTS环境中 开发者可以认为 activity 的生命周期 就是应用的生命周期。
只需要了解本章节中列出的 activity相关生命周期即可。即 在UTS环境中 开发者可以认为 activity 的生命周期 就是应用的生命周期。
其中最为常见的场景,要数`onAppActivityDestroy`中释放系统资源了:
举个例子,以Hello UTS [用户截屏插件](https://ext.dcloud.net.cn/plugin?id=9897)为例。
在注册监听回调时,添加了下列代码。
在注册监听回调时,添加了下列代码。
```
UTSAndroid.onAppActivityDestroy(function(){
screenOB?.stopWatching()
......@@ -919,7 +919,7 @@ let user?:string
```kotlin
fun startListener():void{
}
```
uts中,需要区分全局方法、成员方法
......@@ -927,14 +927,14 @@ uts中,需要区分全局方法、成员方法
```ts
// 成员方法
startListener():void{
}
```
```ts
// 全局方法
function startListener():void{
}
```
......@@ -952,7 +952,7 @@ uts中,需要区分全局方法、成员方法
```ts
// 使用UTS 实现 OnClickListener接口
class StartServiceListener extends OnClickListener{
override onClick(v?: View):void{
// 执行点击逻辑
}
......@@ -984,7 +984,7 @@ user!!.sayHello();
//kotlin 中快速实现super
constructor() : super() {
}
```
```uts
......@@ -1112,7 +1112,7 @@ System.currentTimeMillis()
```kotlin
// 获取当前时间戳
class ScreenReceiver extends BroadcastReceiver(){
}
```
......@@ -1121,7 +1121,7 @@ UTS环境中,不建议这样做(虽然目前这样做不会影响编译)
```ts
class ScreenReceiver extends BroadcastReceiver{
constructor (){
super();
}
......@@ -1134,12 +1134,12 @@ class ScreenReceiver extends BroadcastReceiver{
```ts
// IDE会提示 name,status,desc 变量未使用
onStatusUpdate(name:string, status:Int, desc:string){
}
// 不会警告变量未使用
onStatusUpdate(_name:string, _status:Int, _desc:string){
}
```
......@@ -1166,11 +1166,11 @@ onStatusUpdate(_name:string, _status:Int, _desc:string){
简单示例
```ts
class CustomThread extends Thread{
constructor(){
super();
}
override run(){
Thread.sleep(1000)
console.log("CustomThread = " + Thread.currentThread().getName())
......@@ -1258,7 +1258,7 @@ val d = c.toIntArray()
### 6.7 如何生成byte[]对象
在java平台中,二进制操作一般采用字节数组实现。
在java平台中,二进制操作一般采用字节数组实现。
UTS在android平台编译后的语言为Kotlin,对应的语法对象是ByteArray.
......@@ -1275,7 +1275,7 @@ console.log(byteTest)
在 uni-app 1.0 平台,js环境与原生环境的交互都是经过js引擎桥接
js引擎除了 string,number,boolean 等基本数据结构外,仅支持JSONObject,JSONArray两种。
js引擎除了 string,number,boolean 等基本数据结构外,仅支持JSONObject,JSONArray两种。
+ JSONObject 比较常见,基本所有的接口参数都会 对应一个uts中定义的 type 类
+ JSONArray 一般在uts中采用Array数组来承接
......@@ -1322,7 +1322,7 @@ UTS插件支持使用android的原生资源,比如动画,布局,字符串
import R from 'io.dcloud.uni_modules.uts_nativepage.R';
```
### 6.10 UTSJSONObject 转 Map
### 6.10 UTSJSONObject 转 Map
```
val extraParam = UTSJSONObject()
......@@ -1358,7 +1358,7 @@ console.log(aa.javaClass.toString()) // int
### 6.13 UTS 如何进行遍历操作
相比于for in / 下标计数等写法, UTS 推荐更现代化的foreach语法 实现集合的遍历。
相比于for in / 下标计数等写法, UTS 推荐更现代化的foreach语法 实现集合的遍历。
数组:
```
......@@ -1408,18 +1408,18 @@ class User {
}
class StartBroadcastListener extends User implements OnClickListener{
override onClick(v?: View):void{
let myReceiver = new ScreenReceiver();
let filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_SCREEN_ON);
UTSAndroid.getUniActivity()!.registerReceiver(myReceiver, filter);
// 提示屏幕状态监听已经注册
Toast.makeText(UTSAndroid.getAppContext(),"屏幕状态监听已注册,注意观察控制台日志",Toast.LENGTH_LONG).show();
}
}
......@@ -1437,13 +1437,13 @@ class Person{
}
class User extends Person implements android.view.View.OnClickListener,Cloneable{
constructor(){
}
override onClick(v?: android.view.View):void{
console.log(v)
}
override equals(other?: any):boolean{
return true
}
......
......@@ -12,8 +12,8 @@
"deploymentTarget": "9.0", // 可选,插件支持的最低 iOS 版本 默认:9.0"
"dependencies-pods": [ // 可选, 需要依赖的 CocoaPods 库, HBuilderX 3.8.5+ 版本支持
{
"name": "WechatOpenSDK",
"version": "2.0.2"
"name": "WechatOpenSDK",
"version": "2.0.2"
}, {
"name": "Alamofire",
"version": "5.7.3", //配置 repo 时可不指定 version
......@@ -208,9 +208,9 @@ sudo gem install cocoapods
## 常见问题@questions
### MAC 环境真机运行 uts 插件时未安装 CocoaPods@notInstall
### MAC 环境真机运行 uts 插件时未安装 CocoaPods@notinstall
错误信息:uni_module [xxxx](iOS)存在pod三方依赖库,请先安装 CocoaPods!
错误信息:`uni_module xxxx (iOS)` 存在pod三方依赖库,请先安装 CocoaPods!
说明:出现此错误是因为当前环境没有安装 CocoaPods
处理方法: 请参照上述章节描述的方式安装 CocoaPods 工具。
......
......@@ -83,7 +83,7 @@ uts 插件编译到 app 平台时,在功能上相当于 uni-app 之前的 app
### uts插件和Native.js的区别
- [Native.js](../tutorial/native-js.md) 运行在js上,通过反射调用os api。功能和性能都不及原生
- [Native.js](https://uniapp.dcloud.net.cn/tutorial/native-js.html) 运行在js上,通过反射调用os api。功能和性能都不及原生
- uts 在 app 上不运行在 js 引擎里,是真正的原生。
......@@ -93,7 +93,7 @@ uts 插件编译到 app 平台时,在功能上相当于 uni-app 之前的 app
在 uni-app 的项目工程下,提供了独立的目录 `utssdk`,来存放 uts 插件。
当然官方更推荐使用 [uni_modules](uni_modules.md) 方式,这是更好的包管理方案。
当然官方更推荐使用 [uni_modules](https://uniapp.dcloud.net.cn/plugin/uni_modules.html) 方式,这是更好的包管理方案。
首先确保项目根目录存在 uni_modules 文件夹,如果不存在,需要手动创建一个。
......@@ -128,12 +128,12 @@ package.json 为 uni_modules 插件配置清单文件,负责描述插件的基
"version": "0.1",
"description": "uts插件示例",
"uni_modules": {
}
}
```
上面是一个默认的清单文件示例,关于 package.json 更多描述[详见](uni_modules.md#package.json)
上面是一个默认的清单文件示例,关于 package.json 更多描述[详见](https://uniapp.dcloud.net.cn/plugin/uni_modules.html#package-json)
### 插件的目录结构
......@@ -210,34 +210,34 @@ app-android 文件夹下存在Android平台原生配置,包括以下目录或
|index.uts |主入口,interface.uts/index.d.ts声明的能力在Android平台下的实现 |
##### assets
##### assets
Android平台原生assets资源目录,建议只保存UTS插件内置的资源文件。
除了插件下有assets目录,项目下也有。注意2者的区别。
如果需要插件使用者配置(如三方SDK的授权文件),则插件作者应该在插件文档中告诉插件使用者,配置到项目的Android原生应用资源目录,而不是配置在插件目录下。[详见](https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-android)
##### libs
##### libs
Android平台原生三方库目录,支持以下类型文件:
- jar
- jar
- aar
- so库
如果封装三方原生sdk为uni-app插件,可以将sdk的jar/aar文件放到此目录,但因为多个uts插件引用相同三方原生sdk时可能会产生冲突,所以如果sdk支持仓储,建议优先使用仓储配置,而不是直接把jar等文件放在libs目录。
仓储配置参考config.json的[dependencies](#dependencies)
仓储配置参考config.json的[dependencies](#dependencies)
如果使用的三方sdk包含了so库,保存到此目录时,需按Android的abi类型分目录保存。
关于libs目录的使用,可以参考 [Hello UTS](https://gitcode.net/dcloud/hello-uts/-/tree/master/uni_modules)
##### res
##### res
Android平台原生res资源目录,建议只保存UTS插件内置的资源文件。
除了插件下有res目录,项目下也有。注意2者的区别。一般使用者的配置不放在插件下,而放在自己的项目下。项目下配置[详见](https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-android)
##### AndroidManifest.xml
##### AndroidManifest.xml
Android原生应用清单文件,建议只保存UTS插件内置的清单文件配置。
除了插件下有AndroidManifest.xml,项目下也有。注意2者的区别。一般使用者的配置不放在插件下,而放在自己的项目下。项目下配置[详见](https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-android)
......@@ -272,37 +272,37 @@ uts插件在Android平台的原生层配置文件,可以在其中配置依赖
}
```
- abis
当插件使用了NDK开发的so库时配置,描述插件支持CPU类型。
- abis
当插件使用了NDK开发的so库时配置,描述插件支持CPU类型。
可取值:armeabi-v7a、arm64-v8a、x86、x86_64
<a id="dependencies"/>
- dependencies
配置插件依赖的仓储,云端打包时会合并到Android原生工程的build.gradle的
数组类型,数组中的项可以是字符串类型或JSON对象
对于字符串类型项,将会作为`implementation`方式依赖添加到build.gradle中,上面示例中"androidx.core:core-ktx:1.6.0"将会添加以下配置
- dependencies
配置插件依赖的仓储,云端打包时会合并到Android原生工程的build.gradle的
数组类型,数组中的项可以是字符串类型或JSON对象
对于字符串类型项,将会作为`implementation`方式依赖添加到build.gradle中,上面示例中"androidx.core:core-ktx:1.6.0"将会添加以下配置
```
dependencies {
implementation 'androidx.core:core-ktx:1.6.0'
}
```
对于JSON类型项,将会把source字段值作为gradle源码添加到build.gradle中,上面示例中"id": "com.xxx.richtext:richtext"项将会添加以下配置
对于JSON类型项,将会把source字段值作为gradle源码添加到build.gradle中,上面示例中"id": "com.xxx.richtext:richtext"项将会添加以下配置
```
dependencies {
implementation 'com.xxx.richtext:richtext:3.0.7'
}
```
- minSdkVersion
- minSdkVersion
插件支持的Android最低版本,整数类型,取值范围为Android API Level
默认uni-app最低支持版本为19,即Android4.4.2
- project
云端打包项目相关配置,当使用的三方SDK需要配置gradle插件时可配置此项:
+ plugins
此配置将会添加到云端打包工程app及build.gradle文件的“plugins”中:
- project
云端打包项目相关配置,当使用的三方SDK需要配置gradle插件时可配置此项:
+ plugins
此配置将会添加到云端打包工程app及build.gradle文件的“plugins”中:
```
plugins {
id 'com.android.application'
......@@ -310,8 +310,8 @@ plugins {
id 'com.huawei.agconnect'
}
```
+ dependencies
此配置将会添加到云端打包工程项目级build.gradle文件的“buildscript > dependencies”中
+ dependencies
此配置将会添加到云端打包工程项目级build.gradle文件的“buildscript > dependencies”中
```
buildscript {
dependencies {
......@@ -347,28 +347,28 @@ app-ios 文件夹下存在iOS平台原生配置,包括以下目录或文件
|config.json |iOS平台原生工程的配置文件 |
|index.uts |主入口,interface.uts/index.d.ts声明的能力在iOS平台下的实现 |
##### Frameworks
##### Frameworks
iOS平台插件依赖的三方framework存放目录,支持以下类型文件:
- framework
- framework
- xcframework
注意:目前支持静态库和动态库
##### Libs@ios-libs
##### Libs@ios-libs
> HBuilder X 3.7.2+ 版本支持
iOS平台插件依赖的三方.a库存放目录,支持以下类型的.a库:
- 使用OC语言创建的.a库
- 使用OC语言创建的.a库
- 使用Swift语言创建的.a库
备注:有关OC及Swift创建的.a库的区别、.a库的使用方法和注意事项[详见](https://uniapp.dcloud.net.cn/plugin/uts-for-ios)
##### Resources
iOS平台原生资源目录,建议只保存uts插件内置的资源文件。云端打包时会将此目录下的所有文件添加到应用 main bundle 中。
iOS平台原生资源目录,建议只保存uts插件内置的资源文件。云端打包时会将此目录下的所有文件添加到应用 main bundle 中。
除了插件下有Resources目录,项目下也有。注意2者的区别。一般使用者的配置不放在插件下,而放在自己的项目下。项目下配置[详见](https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-ios.html#%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6-bundle-resources)
除了插件下有Resources目录,项目下也有。注意2者的区别。一般使用者的配置不放在插件下,而放在自己的项目下。项目下配置[详见](https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-ios.html#%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6-bundle-resources)
##### Info.plist
iOS平台原生 Info.plist 文件配置,云端打包时会将配置信息合并到原生工程的 Info.plist 中。
......@@ -411,21 +411,21 @@ iOS平台原生 entitlements 文件配置,云端打包时会将配置信息合
```
##### config.json
uts插件在iOS平台的其它原生配置文件,可以在其中配置依赖的系统库等信息
uts插件在iOS平台的其它原生配置文件,可以在其中配置依赖的系统库等信息
```json
{
"frameworks": [
"可选,依赖的系统库(系统库有.framework和.tbd和.dylib类型)"
"可选,依赖的系统库(系统库有.framework和.tbd和.dylib类型)"
],
"deploymentTarget": "9.0", // 可选,插件支持的最低 iOS 版本 默认:9.0"
"validArchitectures": [ // 可选,支持的 CPU 架构类型 默认:arm64
"arm64"
],
"arm64"
],
"dependencies-pods": [ // 可选, 需要依赖的pod库, HBuilderX 3.8.5+ 版本支持
{
"name": "WechatOpenSDK",
"version": "2.0.2"
"name": "WechatOpenSDK",
"version": "2.0.2"
}]
}
```
......@@ -589,13 +589,13 @@ type GetBatteryInfoOptions = {
};
/**
* 导出 获取电量方法
* 导出 获取电量方法
*/
export default function getBatteryInfo(options: GetBatteryInfoOptions) {
// 开启电量检测
UIDevice.current.isBatteryMonitoringEnabled = true
// 返回数据
const res = {
errMsg: "getBatteryInfo:ok",
......@@ -616,12 +616,12 @@ export default function getBatteryInfo(options: GetBatteryInfoOptions) {
import { UIDevice } from "UIKit";
/**
* 导出 获取电量方法
* 导出 获取电量方法
*/
export default function getBatteryLevel():number {
// 开启电量检测
UIDevice.current.isBatteryMonitoringEnabled = true
let level = Number(UIDevice.current.batteryLevel * 100)
return level
}
......@@ -631,8 +631,8 @@ export default function getBatteryLevel():number {
### 应用程序生命周期函数监听@hooksClass
> 特别注意:
> 此功能在 HBuilderX 3.97+ 版本支持,HBuilderX 3.97 之前的版本不支持。
......@@ -641,7 +641,7 @@ export default function getBatteryLevel():number {
在插件开发过程中,有时我们需要监听 APP 的生命周期函数来完成一些业务逻辑,比如在应用启动时初始化三方 SDK, 在收到推送消息时做消息的处理,在被 url scheme 唤醒时调用指定功能等等。
在 iOS 平台可以通过自定义 class 遵循 `UTSiOSHookProxy` 协议的方式来实现对应用程序生命周期函数的监听。
> 注意:
> 该自定义 class 需要 export, 否则不会参与编译。
......@@ -668,19 +668,19 @@ export class MyPluginClass implements UTSiOSHookProxy {
}
// 远程通知注册成功时的回调函数。(打自定义基座时需要勾选 push 模块)
didRegisterForRemoteNotifications(deviceToken: Data | null) {
}
// 远程通知注册失败时的回调函数。(打自定义基座时需要勾选 push 模块)
didFailToRegisterForRemoteNotifications(error: NSError | null) {
didFailToRegisterForRemoteNotifications(error: NSError | null) {
}
// 应用收到远程通知时的回调函数。(打自定义基座时需要勾选 push 模块)
didReceiveRemoteNotification(userInfo: Map<AnyHashable, any> | null) {
}
// 应用收到本地通知时的回调函数。(打自定义基座时需要勾选 push 模块)
didReceiveLocalNotification(notification: UILocalNotification | null) {
}
// 通过 url scheme 方式唤起 app 时的回调函数。(iOS9 之前的系统回调此方法,iOS9 之后的系统请使用 applicationOpenURLOptions)
applicationHandleOpenURL(application: UIApplication | null, url: URL | null) : boolean {
......@@ -697,7 +697,7 @@ export class MyPluginClass implements UTSiOSHookProxy {
// 应用完全激活时的回调函数。
applicationDidBecomeActive(application: UIApplication | null) {
}
}
// 应用程序进入后台时的回调函数。
applicationDidEnterBackground(application: UIApplication | null) {
console.log("did enter background")
......@@ -714,12 +714,12 @@ export class MyPluginClass implements UTSiOSHookProxy {
}
// 当应用程序接收到与用户活动相关的数据时调用此方法,例如,当用户使用 Universal Link 唤起应用时。
applicationContinueUserActivityRestorationHandler(application: UIApplication | null, userActivity: NSUserActivity | null, restorationHandler: ((res: [any] | null) => void) | null = null) : boolean {
return true
}
}
```
#### Android 平台
......@@ -790,12 +790,12 @@ export function getPluginVersion(): string{
}
```
2. UTSJSONObjct
2. UTSJSONObjct
```ts
// UTSJSONObjct 示例
export function getPluginVersion(): UTSJSONObject{
var ret = {
version: "1.2.0",
versionNum: 120,
......@@ -851,7 +851,7 @@ export function postUserInfo(user:UTSJSONObject){
}
```
需要注意的是,在声明为`any`类型的前提下, `uni-app` 环境中的 `Object` 在UTS环境中也会被转换为 `UTSJSONObjct`.
需要注意的是,在声明为`any`类型的前提下, `uni-app` 环境中的 `Object` 在UTS环境中也会被转换为 `UTSJSONObjct`.
也就是说上面的代码同样可以写作
......@@ -992,7 +992,7 @@ getBatteryCapacity()
自定义基座支持uts插件。
#### Android平台
#### Android平台
普通uts代码可以直接使用标准基座真机运行。但与原生插件一样,涉及以下场景,需要自定义基座后方能生效:
- 1 集成三方sdk
......@@ -1000,7 +1000,7 @@ getBatteryCapacity()
总结来说,就是所有 涉及新增依赖/gralde配置/androidManifest.xml/资源 等标准基座不具备的能力时,需要自定义基座
#### iOS平台
#### iOS平台
uts插件编译需要XCode环境,因此在mac电脑安装了XCode工具时支持直接使用标准基座真机运行。
在windows电脑或者mac电脑没有安装XCode工具时,需要提交云端打包生成自定义基座后才能调用uts插件。
......@@ -1018,7 +1018,7 @@ uts插件支持debug断点调试。
## 云端打包
正常支持云端打包。但打包后uts编译为了纯原生二进制代码,不支持wgt热更新。
正常支持云端打包。但打包后uts编译为了纯原生二进制代码,不支持wgt热更新。
## 常见问题
......@@ -1033,7 +1033,7 @@ uts插件支持debug断点调试。
vue2项目使用 uts 插件的最低版本要求是HBuilderX 3.6.8,低于此版本,编译时将报错。
- UTSCallback
- UTSCallback
HBuilderX 3.7.7开始,不推荐使用 UTSCallback 定义函数类型,当需要定义函数类型时,应定义为更具体的类型,如:`const callback:UTSCallback` 应调整为`const callback:()=>void`
如果您使用的是插件市场三方uts插件,可以检查更新插件最新版本
......@@ -1093,7 +1093,7 @@ let layoutParam = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARE
函数参数支持设置默认值,比如下面testName
```ts
function connectWifi(option: WifiConnectOption,testName :string = "zhangsan")
function connectWifi(option: WifiConnectOption,testName :string = "zhangsan")
```
### 在uni-app 1.0 上的导出限制
......@@ -1132,7 +1132,7 @@ console.log("jsonObj['age'] == " + jsonObj['age'] );
解决方案:
方案1:将 uts 插件导出 class 调整为导出 function,避免在 js 端实例化 uts 中的 class。
方案2:云端打包机已修复此问题,您可以通过云打包自定义基座来规避该问题。
## 示例项目
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册