跳转到内容

宿主 UI

FRVR 的原生 App 壳(Google Play、iOS、Samsung Galaxy Store)可以在游戏周围绘制一个标题栏,里面有隐私与同意入口,以及登录或账号菜单。FRVR.hostUI.titlebar 上报这个栏的位置,并允许游戏隐藏它。

SDK 初始化之后 FRVR.hostUI 始终存在。在没有标题栏的宿主上它上报 supported: false,所以不需要额外判空。

const state = await FRVR.hostUI.titlebar.getState();
// { supported, visible, mode, edge, height, width, consumesGameSpace }
字段含义
supported宿主能绘制标题栏。没有标题栏的宿主上为 false。
visible标题栏正在显示。
mode绘制方式:dedicated(游戏上方的一条栏)、cutout(在刘海或挖孔区域内)、rail(横屏时游戏旁边的竖条)、rail-cutout(侧边挖孔区域内的竖条)。宿主可能增加更多取值。
edge所在的屏幕边:top、left 或 right。
height / widthCSS 像素尺寸。隐藏时为 0。
consumesGameSpace是否占用游戏的空间(dedicated 和 rail 会)。

游戏的视口已经减去了标题栏。**不要为它偏移布局。**尺寸字段是给想把某些元素与标题栏对齐的游戏用的。

getLastState() 同步返回最近一次已知的状态(宿主应答之前为 supported: false),getHeight() 返回最近一次已知的高度。

旋转设备可能把顶部的栏变成侧边的竖条:

const stop = FRVR.hostUI.titlebar.onChange(state => relayout(state));
// 之后
stop();

自己绘制登录、账号和隐私按钮的游戏,可以隐藏宿主的:

const titlebar = FRVR.hostUI.titlebar;
if ((await titlebar.getState()).supported) {
  await titlebar.setVisible(false);
}

setVisible() resolve 出调用之后标题栏是否可见;在没有标题栏的宿主上始终是 false。

想在游戏显示之前就隐藏它,设置 FRVR.config.host.titlebar = false。通常 FRVR 会在生成的配置里按渠道设置好。

方法作用
titlebar.getState()宿主应答之后的当前状态。
titlebar.getLastState()同步返回最近一次已知的状态。
titlebar.getHeight()最近一次已知的高度,CSS 像素。
titlebar.setVisible(visible)显示或隐藏标题栏。resolve 出最终的可见性。
titlebar.onChange(fn)标题栏显示、隐藏、改变尺寸或位置时调用 fn(state)。返回一个移除监听的函数。