core
    正在准备搜索索引...

    接口 Ymx

    ymx Core

    interface Ymx {
        inApp: boolean;
        isAndroid: boolean;
        isHarmony: boolean;
        isIos: boolean;
        isWeb: boolean;
        sdkVersionCode: number;
        sdkVersionName: string;
        versionCode: number;
        versionName: string;
        chooseMedia(data: ChooseMediaData): Promise<ChooseMediaResult>;
        clearLayouts(): Promise<void>;
        clearStorage(): Promise<void>;
        close(result?: any): Promise<void>;
        compressImage(data: CompressImageData): Promise<CompressImageResult>;
        compressVideo(data: CompressVideoData): Promise<CompressVideoResult>;
        downloadFile(data: DownloadFileData): Promise<DownloadFileResult>;
        emit(data: EmitData): Promise<void>;
        exit(): Promise<void>;
        getBatteryInfo(): Promise<GetBatteryInfoResult>;
        getDeclaredPermissions(): Promise<DeclaredPermissionsResult>;
        getImageInfo(data: GetImageInfoData): Promise<GetImageInfoResult>;
        getKeepScreenOn(): Promise<KeepScreenOnResult>;
        getLayout(): Promise<Layout>;
        getLayouts(): Promise<LayoutPattern[]>;
        getNavigationBar(): Promise<NavigationBar>;
        getScreenBrightness(): Promise<ScreenBrightness>;
        getScreenOrientation(): Promise<ScreenOrientation>;
        getStatusBar(): Promise<StatusBar>;
        getStorage(data: StorageKey): Promise<StorageResult>;
        getStorageInfo(): Promise<StorageInfoResult>;
        getTheme(): Promise<Theme>;
        getTitleBar(): Promise<TitleBar>;
        getVideoInfo(data: GetVideoInfoData): Promise<GetVideoInfoResult>;
        hasPermissionDeclared(
            permission: PermissionData,
        ): Promise<PermissionDeclaredResult>;
        hasPermissionGranted(permission: PermissionData): Promise<PermissionResult>;
        hideLoading(): Promise<void>;
        hideToast(): Promise<void>;
        insertLayout(layoutPatternIndex: LayoutPatternIndex): Promise<void>;
        launch(data: LaunchData): Promise<number>;
        makePhoneCall(data: MakePhoneCallData): Promise<void>;
        off(data: UnsubscribeEvent): Promise<void>;
        offAppHide(listener?: () => void): Promise<void>;
        offAppShow(listener?: () => void): Promise<void>;
        on(data: SubscribeEvent): Promise<void>;
        onAppHide(listener: () => void): Promise<void>;
        onAppShow(listener: () => void): Promise<void>;
        once(data: SubscribeEvent): Promise<void>;
        open(data: OpenData): Promise<void>;
        openPermissionSetting(
            permissions: PermissionsData,
        ): Promise<PermissionsResult>;
        removeLayout(index: number): Promise<void>;
        removeStorage(data: StorageKey): Promise<void>;
        request(data: RequestData): Promise<RequestResult>;
        requestPermission(
            permission: RequestPermissionData,
        ): Promise<PermissionResult>;
        requestPermissions(
            permissions: RequestPermissionsData,
        ): Promise<PermissionsResult>;
        requirePlugin(pluginId: string): object;
        saveImageToPhotosAlbum(data: SaveMediaToPhotosAlbumData): Promise<void>;
        saveVideoToPhotosAlbum(data: SaveMediaToPhotosAlbumData): Promise<void>;
        scanCode(data: ScanCodeData): Promise<ScanCodeResult>;
        setKeepScreenOn(data: KeepScreenOnData): Promise<void>;
        setLayout(layout: Layout): Promise<void>;
        setNavigationBar(navigationBar: NavigationBar): Promise<void>;
        setScreenBrightness(data: ScreenBrightness): Promise<void>;
        setScreenOrientation(screenOrientation: ScreenOrientation): Promise<void>;
        setStatusBar(statusBar: StatusBar): Promise<void>;
        setStorage(data: StorageData): Promise<void>;
        setTheme(theme: Theme): Promise<void>;
        setTitleBar(titleBar: TitleBar): Promise<void>;
        showActionSheet(data: ShowActionSheetData): Promise<ShowActionSheetResult>;
        showLoading(data: ShowLoadingData): Promise<void>;
        showModal(data: ShowModalData): Promise<ShowModalResult>;
        showToast(data: ShowToastData): Promise<void>;
        uploadFile(data: UploadFileData): Promise<UploadFileResult>;
        vibrateLong(): Promise<void>;
        vibrateShort(data: VibrateShortData): Promise<void>;
    }

    层级 (查看层级一览)

    索引

    属性

    inApp: boolean

    是否运行在 APP 环境中

    isAndroid: boolean

    是否运行在 Android APP 环境中

    isHarmony: boolean

    是否运行在 HarmonyOS APP 环境中

    isIos: boolean

    是否运行在 iOS APP 环境中

    isWeb: boolean

    是否运行在浏览器环境中

    sdkVersionCode: number

    基础库版本号,如 260520

    sdkVersionName: string

    基础库版本名,如 1.2605.20

    versionCode: number

    APP 版本号,如 123

    versionName: string

    APP 版本名,如 1.2.3

    方法

    • 拍摄或从手机相册中选择图片或视频

      参数

      返回 Promise<ChooseMediaResult>

      ymx.chooseMedia({
      // 相册
      sourceType: ['album'],
      // 选一个
      count: 1,
      mediaType: ['image']
      }).then(res => {
      alert(JSON.stringify(res));
      });
      ymx.chooseMedia({
      // 相册
      sourceType: ['album'],
      // 选 3 个
      count: 3,
      mediaType: ['image']
      }).then(res => {
      alert(JSON.stringify(res));
      });
      ymx.chooseMedia({
      // 拍照
      sourceType: ['camera'],
      // 后置摄像头
      camera: 'back',
      mediaType: ['image']
      }).then(res => {
      alert(JSON.stringify(res));
      });
      ymx.chooseMedia({
      // 拍照
      sourceType: ['camera'],
      // 前置摄像头
      camera: 'front',
      mediaType: ['video']
      }).then(res => {
      alert(JSON.stringify(res));
      });
    • 清空布局规则

      返回 Promise<void>

    • 清理本地数据缓存

      返回 Promise<void>

      ymx.clearStorage().then(() => {
      alert('success');
      });
    • 关闭当前窗口

      参数

      • 可选result: any

        需要返回给父窗口的数据

      返回 Promise<void>

      ymx.close()
      .then(() => {
      console.log('成功');
      })
      .catch((e) => {
      alert(`失败 ${JSON.stringify(e)}`);
      });
      // 带返回值的关闭,在 ymx.open() 的 onResult 函数中接收处理返回值
      ymx.close({
      hello: 'world 世界',
      year: 2026
      }).then(() => {
      console.log('成功');
      }).catch((e) => {
      alert(`失败 ${JSON.stringify(e)}`);
      });
    • 压缩图片接口,可选压缩质量。

      参数

      返回 Promise<CompressImageResult>

      ymx.chooseMedia({
      mediaType: ['image'],
      count: 1
      }).then(async (choose) => {
      // 压缩图片
      const res = await ymx.compressImage({
      src: choose.tempFiles[0].tempFilePath,
      compressedWidth: 480
      });
      alert(JSON.stringify(res));
      });
    • 压缩视频接口。开发者可指定压缩质量 quality 进行压缩。当需要更精细的控制时,可指定 bitrate、fps、和 resolution,当 quality 传入时,这三个参数将被忽略。原视频的相关信息可通过 getVideoInfo 获取。

      参数

      返回 Promise<CompressVideoResult>

      ymx.chooseMedia({
      mediaType: ['video'],
      count: 1
      }).then(async (choose) => {
      // 压缩视频
      const res = await ymx.compressVideo({
      src: choose.tempFiles[0].tempFilePath,
      quality: 'medium'
      });
      alert(JSON.stringify(res));
      });
    • 触发一个事件

      参数

      返回 Promise<void>

      ymx.emit({
      eventName: 'my-on',
      data: 'hello on'
      });
      ymx.emit({
      eventName: 'my-once',
      data: 'hello once'
      });
    • 退出应用

      返回 Promise<void>

      ymx.exit();
      
    • 获取图片信息。

      参数

      返回 Promise<GetImageInfoResult>

      ymx.chooseMedia({
      mediaType: ['image'],
      count: 1
      }).then(async (choose) => {
      // 获取图片信息
      const res = await ymx.getImageInfo({
      src: choose.tempFiles[0].tempFilePath
      });
      alert(JSON.stringify(res));
      });
      ymx.getImageInfo({
      src: 'https://i.cdn.yimenapp.com/sys/1.jpg'
      }).then(res => {
      alert(JSON.stringify(res));
      });
    • 获取基于 URL 正则匹配模式的 UI 布局规则列表

      按顺序匹配 url,使用成功匹配项的 layout 设置,如果全部匹配失败则使用最后一项配置。

      返回 Promise<LayoutPattern[]>

    • 从本地缓存中异步获取指定 key 的内容

      参数

      返回 Promise<StorageResult>

      ymx.getStorage({
      key: 'key1'
      }).then(res => {
      alert(res.data);
      });
      ymx.getStorage({
      key: 'key2'
      }).then(res => {
      alert(JSON.stringify(res.data));
      });
    • 隐藏 loading 提示

      返回 Promise<void>

      ymx.hideLoading();
      
    • 隐藏吐司提示

      返回 Promise<void>

      ymx.hideToast();
      
    • 拉起第三方应用

      参数

      返回 Promise<number>

      成功的 urls 序号

      ymx.launch({
      url: 'https://xw.qq.com/'
      }).then(() => {
      console.log('成功');
      }).catch((e) => {
      alert(`失败 ${JSON.stringify(e)}`);
      });
      ymx.launch({
      url: 'weixin://'
      }).then(() => {
      console.log('成功');
      }).catch((e) => {
      alert(`失败 ${JSON.stringify(e)}`);
      });
      ymx.launch({
      url: 'tel://1801234'
      }).then(() => {
      console.log('成功');
      }).catch((e) => {
      alert(`失败 ${JSON.stringify(e)}`);
      });
    • 取消订阅监听

      参数

      返回 Promise<void>

      ymx.off({
      eventName: 'my-on',
      listener: listener
      });
      ymx.off({
      eventName: 'my-on'
      });
    • 移除应用切换到后台监听器

      参数

      • 可选listener: () => void

        提供了 listener 则仅移除此监听器,为提供 listener 则全部移除

      返回 Promise<void>

      ymx.offAppHide();
      
    • 移除应用切换到前台监听器

      参数

      • 可选listener: () => void

        提供了 listener 则仅移除此监听器,为提供 listener 则全部移除

      返回 Promise<void>

      ymx.offAppShow(listener);
      
      ymx.offAppShow();
      
    • 持续订阅监听一个事件

      参数

      返回 Promise<void>

      const listener = (data) => {
      console.log('on data', data);
      }
      ymx.on({
      eventName: 'my-on',
      listener: listener
      });
    • 订阅应用切换到后台时触发事件

      参数

      • listener: () => void

      返回 Promise<void>

      监听器

      ymx.onAppHide(() => {
      console.log('onAppHide');
      });
    • 订阅应用切换到前台时触发事件

      参数

      • listener: () => void

        监听器

      返回 Promise<void>

      const listener = () => {
      console.log('onAppShow');
      };
      ymx.onAppShow(listener);
    • 订阅监听一个事件,触发一次后失效。

      参数

      返回 Promise<void>

      ymx.once({
      eventName: 'my-once',
      listener: (data) => {
      console.log('once data', data);
      }
      });
    • 在新窗口中打开链接

      参数

      返回 Promise<void>

      ymx.open({
      url: 'https://xw.qq.com/'
      }).then(() => {
      console.log('成功');
      }).catch((e) => {
      alert(`失败 ${JSON.stringify(e)}`);
      });
      ymx.open({
      url: 'https://xw.qq.com/',
      style: 'dialog',
      onResult: (result) => {
      // 关闭子窗口时返回的结果 ymx.close(result)
      console.log(result);
      }
      }).then(() => {
      console.log('成功');
      }).catch((e) => {
      alert(`失败 ${JSON.stringify(e)}`);
      });
    • 删除布局规则

      参数

      • index: number

        从 0 开始的序号

      返回 Promise<void>

    • 从本地缓存中移除指定 key

      参数

      返回 Promise<void>

      ymx.removeStorage({
      key: 'key1'
      }).then(() => {
      alert('success');
      });
    • 网络请求

      参数

      返回 Promise<RequestResult>

      ymx.request({
      url: 'https://www.yimenapp.com/doc/echo2',
      method: 'POST',
      data: {
      key1: 'value 1',
      hello: '世界'
      }
      }).then(res => {
      alert(JSON.stringify(res));
      }).catch((err) => {
      alert(`request error: ${JSON.stringify(err)}`);
      });
      ymx.request({
      url: 'https://www.yimenapp.com/doc/echo2',
      method: 'GET'
      }).then(res => {
      alert(JSON.stringify(res));
      }).catch((err) => {
      alert(`request error: ${JSON.stringify(err)}`);
      });
    • 构建插件 js API 接口实例

      此接口返回 object 类型,为获得接口类型验证和智能提示,请按如下操作:

      • 安装插件的 TypeScript 接口类型定义包,以 ymx-wechat 插件为例
      npm install --save-dev @ymxjs/ymx-wechat
      
      • 将 requirePlugin 返回值强制转换为插件的对应类型 YmxWechat
      const wechat = ymx.requirePlugin('ymx-wechat') as YmxWechat;
      // 至此,调用 wechat 下的接口即可获得开发环境类型验证和智能提示
      // wechat.login...

      参数

      • pluginId: string

        插件 ID

      返回 object

    • 保存图片到系统相册

      返回 Promise<void>

      ymx.downloadFile({
      url: 'https://i.cdn.yimenapp.com/sys/2.jpg'
      }).then(async (file) => {
      alert('已下载图片');
      // 保存图片到相册
      await ymx.saveImageToPhotosAlbum({
      filePath: file.tempFilePath
      });
      alert('已保存图片到相册');
      })
    • 保存视频到系统相册

      返回 Promise<void>

      ymx.downloadFile({
      url: 'https://cdn.myapp.ltd/sys/sunflower.mp4'
      }).then(async (file) => {
      alert('已下载视频');
      // 保存视频到相册
      await ymx.saveVideoToPhotosAlbum({
      filePath: file.tempFilePath
      });
      alert('已保存视频到相册');
      })
    • 调起客户端扫码界面进行扫码

      参数

      返回 Promise<ScanCodeResult>

      ymx.scanCode({
      scanType: ['barCode', 'qrCode']
      }).then(res => {
      alert(JSON.stringify(res));
      });
      ymx.scanCode({
      onlyFromCamera: true
      }).then(res => {
      alert(JSON.stringify(res));
      });
    • 设置是否保持常亮状态

      参数

      返回 Promise<void>

      ymx.setKeepScreenOn({
      keepScreenOn: true
      }).then(() => {
      alert('已开启屏幕常亮');
      });
      ymx.setKeepScreenOn({
      keepScreenOn: false
      }).then(() => {
      alert('已关闭屏幕常亮');
      });
    • 设置当前布局选项

      参数

      返回 Promise<void>

    • 将数据存储在本地缓存中指定的 key 中。会覆盖掉原来该 key 对应的内容。除非用户主动删除或因存储空间原因被系统清理,否则数据都一直可用。单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB。

      参数

      返回 Promise<void>

      ymx.setStorage({
      key: 'key1',
      data: 'value 1'
      }).then(() => {
      alert('success');
      });
      ymx.setStorage({
      key: 'key2',
      data: {
      name: '张三',
      age: 26
      }
      }).then(() => {
      alert('success');
      });
    • 设置主题

      参数

      返回 Promise<void>

    • 显示 loading 提示

      参数

      返回 Promise<void>

      ymx.showLoading({
      title: '加载中...',
      mask: true
      });
    • 吐司提示

      参数

      返回 Promise<void>

      ymx.showToast({
      title: 'hello world',
      duration: 2000
      });
    • 上传文件

      参数

      返回 Promise<UploadFileResult>

      // 选文件
      ymx.chooseMedia({
      sourceType: ['album'],
      mediaType: ['image'],
      count: 1
      }).then(choose => {
      // 上传
      ymx.uploadFile({
      url: 'https://www.yimenapp.com/doc/echo2',
      filePath: choose.tempFiles[0].tempFilePath
      }).then(res => {
      alert(JSON.stringify(res));
      }).catch((uploadErr) => {
      alert(`upload error: ${JSON.stringify(uploadErr)}`);
      });
      }).catch((chooseErr) => {
      alert(`choose error: ${JSON.stringify(chooseErr)}`);
      });
    • 使手机发生较长时间的振动(400 ms)

      返回 Promise<void>

      ymx.vibrateLong();