app
继承自 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
文件的解析内容。
- 一个在安装完成或失败时调用的回调函数。在失败的情况下,该回调函数会接收到一个包含Error对象的
注意:这个API是临时的,可能在将来的版本中更改。
从给定的URL安装补丁。补丁成功安装后,补丁不会被使用,直到应用程序重新加载。Windows不支持。
launch(url)
参数:
- url: string
- 要加载的URL。
返回值: *Promise*
要求操作系统在外部app中打开给定的URL。操作系统通常支持各种URL规则,包括http
、https
、mailto
、tel
和sms
。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证书的公钥算法,可以使用RSA2048
、RSA4096
或ECDSA256
。只有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属性改变时候触发。
事件参数
-
target: this 触发事件的控件。
-
value: any[] 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);
}