跳转到内容

个人资料

FRVR.profile 暴露当前玩家由渠道分配的身份 —— 一个稳定的 ID,以及(在仍然暴露这些字段的渠道上)显示名和头像。它始终可用,即使 auth 还没完成,因为这些数据来自渠道本身。

const id = FRVR.profile.id();
// Facebook Instant 上是 'fbig_123456789',Google Play 上是 'gp_ABCDEF',等等。

const name  = FRVR.profile.name?.();    // 可能为空 —— 见下文
const image = FRVR.profile.image?.();   // 可能为空 —— 见下文

const locale = FRVR.profile.getLocale();   // 'en-US'、'pt-BR'、'ja'

用 FRVR.profile.id() 给任何「应当跟着这个玩家在本机存活」的本地数据做主键。如果需要跨设备身份,改用 FRVR.auth.getFRVRID()。

Facebook Instant:不再提供 name 与 photo

Section titled “Facebook Instant:不再提供 name 与 photo”

在其他渠道(Google Play、iOS、各 Web 渠道)上,name 和 photo 在可用时仍按以前的行为返回。读取时永远用 ?.() 守卫。

FRVR.profile.getLocale() 以 BCP 47 标签返回玩家的 locale,例如 en-US、pt-BR、ja。

const locale   = FRVR.profile.getLocale();
const language = locale.split('-')[0];
loadStrings(SUPPORTED.includes(language) ? language : 'en');

它按顺序取第一个可用的值:

  1. 渠道上报的语言。YouTube Playables 和 Facebook Instant 有自己的设置,也就是玩家在宿主 App 里选的语言。
  2. 浏览器的:先 navigator.languages,再 navigator.language。
  3. en-US。

结果会做归一化,所以 Facebook 的 en_US 返回的是 en-US。这个调用不会抛异常,也不会返回空字符串。宿主只上报语言时,它可能只返回语言部分(ja),所以匹配时先比语言,再比地区。

在 FRVR.bootstrapper.init() resolve 之后再调用。在那之前渠道可能还不知道自己的语言,你拿到的是浏览器的。没有语言变化事件,启动时读一次即可。

Profile:读取玩家 id

loading SDK…