当前位置: 首页 > 文档资料 > Tabris 中文文档 >

app

优质
小牛编辑
120浏览
2023-12-01

继承自 NativeObject

用于提供应用信息。

通过 “const {app} = require('tabris');” 引入该对象

示例:

app.on("pause", () => pauseVideo());

方法

getResourceLocation(path)

参数:

  • path: string
    • 资源相对于应用程序根目录的路径。

返回值: string

给定与app打包在一起的资源,返回其URL。可用于访问图片,视频等app资源。请注意,这些资源只能以只读模式访问。

installPatch(url, callback)

参数:

  • url: string
    • 获取补丁的URL。
  • callback: *(error: Error null, patch: any null) => void*
    • 一个在安装完成或失败时调用的回调函数。在失败的情况下,该回调函数会接收到一个包含Error对象的error参数。如果安装成功,此参数将为null,第二个参数会包含补丁中patch.json文件的解析内容。

注意:这个API是临时的,可能在将来的版本中更改。

从给定的URL安装补丁。补丁成功安装后,补丁不会被使用,直到应用程序重新加载。Windows不支持。

launch(url)

参数:

  • url: string
    • 要加载的URL。

返回值: *Promise*

要求操作系统在外部app中打开给定的URL。操作系统通常支持各种URL规则,包括httphttpsmailtotelsms。app也可以注册自定义URL规则。

reload()

iOSAndroid

强制正在运行的应用程序重新加载主模块并重新开始。

属性

id

类型:string

app标识。

pinnedCertificates

类型:any[]

启用HTTP请求的证书固定。为主机定义固定证书后,仅当服务器提供匹配的证书时,才允许与该主机的连接。与不在列表中的主机连接不受影响。

证书固定会影响以下组件:XHR / fetch,WebSockets、图片加载和app补丁。不影响WebView。

固定证书的列表必须是[{host: <string>, hash: <string>, algorithm: <RSA2048|RSA4096|ECDSA256>}, ..]的形式。

  • host属性表示要固定的主机的主机名(包括子域)(允许通配符)。
  • hash属性是subjectPublicKeyInfo的base64编码的sha256指纹,前缀为sha256/
  • algorithm属性表示SSL证书的公钥算法,可以使用RSA2048RSA4096ECDSA256。只有iOS需要此属性。

示例:[{host: 'freegeoip.net', hash: 'sha256/+SVYjThgePRQxQ0e8bWTQDRtPYR/xBRufqyMoeaWteo=', algorithm: 'ECDSA256'}]

详情请见https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning.

version

类型:string

面向用户的版本号,例如‘2.1-beta3’。

versionCode

类型:number

在app store中使用的替代版本号,用来标识应用的不同版本。通常每个版本versionCode都会增加。此属性反映了Android上的versionCode 和iOS上的CFBundleVersion

事件

background

当app不可见时触发。比如另一个应用程序在前台或用户已经返回到主屏幕。

backNavigation

在Android上按下后退按钮时触发。

事件参数

  • target: this 触发事件的控件。

  • preventDefault: () => void 用来阻止默认的返回导航行为。

foreground

当应用程序启动或从后台返回时,触发该事件。

idChanged

id属性更改时触发。

事件参数

  • target: this 触发事件的控件。

  • value: string id的当前值。

pause

当app不再是用户的交互目标时被触发。通常在resume事件之前。

pinnedCertificatesChanged

pinnedCertificates属性改变时候触发。

事件参数

resume

当app可见并准备好与用户进行交互时触发。该事件之前是foreground事件(应用程序再次可见)或pause事件(应用程序恢复与用户交互的能力)。

terminate

iOSAndroid

当app被销毁时触发。在这个回调之后,不能再与app进行交互。

versionChanged

version属性改变时触发。

事件参数

  • target: this 触发事件的控件。

  • value: string version的当前值。

versionCodeChanged

versionCode属性改变时触发。

事件参数

  • target: this 触发事件的控件。

  • value: number versionCode的当前值。

示例

const {Composite, TextView, Button, app, ui} = require('tabris');

// React to application hibernation, resume and back navigation

let paused = 0;

createTextView('Id', app.id);
createTextView('Version', app.version);
createTextView('Version Code', app.versionCode);

new Composite({
  left: 0, top: 'prev() 16', right: 0,
  height: 1,
  background: '#E8E8E8'
}).appendTo(ui.contentView);

let label = new TextView({
  left: 16, top: 'prev() 16', right: 16,
  font: 'italic 14px',
  text: 'You can press home and reopen the app to it to see how long you were away.'
}).appendTo(ui.contentView);

new Button({
  left: 16, right: 16, bottom: 16,
  text: 'Reload app'
}).on('select', () => app.reload())
  .appendTo(ui.contentView);

app.on('pause', () => paused = Date.now())
  .on('resume', () => {
    if (paused > 0) {
      let diff = Date.now() - paused;
      label.text = ' Welcome back!\n You were gone for ' + (diff / 1000).toFixed(1) + ' seconds.';
    }
  });

app.on('backNavigation', (event) => {
  event.preventDefault();
  label.text = 'Back navigation prevented.';
});

function createTextView(key, value) {
  let composite = new Composite({left: 16, top: 'prev() 8', right: 16}).appendTo(ui.contentView);
  new TextView({text: key}).appendTo(composite);
  new TextView({text: value, left: 128}).appendTo(composite);
}