8.7 版本发布—WinterCG 兼容性第一部分
了解更多

在 GitHub 上查看

@nativescript/firebase-remote-config

内容

简介

此插件允许您在 NativeScript 应用中使用 Firebase 远程配置 API。

image

为 Firebase 设置您的应用

在启用 Firebase 远程配置之前,您需要为 Firebase 设置您的应用。要为您的 NativeScript 应用设置和初始化 Firebase,请按照 @nativescript/firebase-core 插件文档中的说明操作。

将 Firebase 远程配置 SDK 添加到您的应用

要将 Firebase 远程配置添加到您的应用,请按照以下步骤操作

  1. 通过在项目根目录中运行以下命令安装 @nativescript/firebase-remote-config 插件。
CLI
npm install @nativescript/firebase-remote-config
  1. 通过导入 @nativescript/firebase-remote-config 模块来添加 SDK。您应该在您的应用中导入此模块一次,理想情况下是在主文件中(例如 app.tsmain.ts)。
TS
import '@nativescript/firebase-remote-config'

创建应用内默认参数

默认应用内值有助于确保您的应用程序代码在设备尚未从远程服务器检索值的情况下按预期运行。

要创建默认的应用内远程配置参数,请按照以下步骤操作

  1. Firebase 控制台 并选择您的项目。

  2. 在“远程配置”仪表板中,单击“创建配置”以创建参数。

  3. 您可以通过以下两种选项之一添加默认的应用内参数值。在这两种选项中,请在应用生命周期的早期将值添加到 Remote Config 对象,理想情况下是在引导文件中(例如 app.tsmain.ts

    1. 下载并将包含参数值的 .xml 文件添加到您的应用。

      • 通过调用 setDefaultsFromResource 方法将 .xml 文件中的应用内默认参数添加到 Remote Config 对象。
      TS
      import { firebase } from '@nativescript/firebase-core'
      
      firebase()
        .remoteConfig()
        .setDefaultsFromResource('remote_config_defaults')
        .then(() => {
          console.log('Default values set.')
        })
    2. 通过将应用内参数值作为对象传递给 setDefaults 方法,将它们添加到 Remote Config 对象。

      TS
      import { firebase } from '@nativescript/firebase-core'
      
      firebase()
        .remoteConfig()
        .setDefaults({
          awesome_new_feature: 'disabled',
        })
        .then(() => {
          console.log('Default values set.')
        })

在远程配置后端设置参数值

要创建覆盖应用内值的新服务器端默认值,请参阅 在远程配置后端设置参数值

获取和激活值

在远程配置后端创建参数后,您可以从服务器获取它们并在您的应用中激活它们。您可以先从服务器获取值,然后再激活它们,或者可以使用 fetchAndActivate 方法将这两个任务组合成一个流程。

TS
import { firebase } from '@nativescript/firebase-core'

firebase()
  .remoteConfig()
  .setDefaults({
    awesome_new_feature: 'disabled',
  })
  .then(() => remoteConfig().fetchAndActivate())
  .then((fetchedRemotely) => {
    if (fetchedRemotely) {
      console.log('Configs were retrieved from the backend and activated.')
    } else {
      console.log(
        'No configs were fetched from the backend, and the local configs were already activated'
      )
    }
  })

设置最小获取间隔

虽然远程配置是一种数据存储,但它并非设计用于频繁读取。默认情况下,Firebase 会缓存参数 12 小时。根据设计,这可以防止值频繁更改并可能导致用户混淆。

  • 要设置不同的最小获取间隔,请将其(以秒为单位)传递给 fetch 方法
TS
import { firebase } from '@nativescript/firebase-core'
// Fetch and cache for 5 minutes
await firebase().remoteConfig().fetch(300)
  • 要完全绕过缓存,您可以传递值 0

    注意

请注意,如果请求值过于频繁,Firebase 可能会开始拒绝您的请求。

:::

  • 您还可以通过将 RemoteConfigSettings 对象的 minimumFetchIntervalMillis 属性设置为缓存值的毫秒数来应用全局缓存频率。这可以在应用启动前的引导文件中完成
TS
import { firebase } from '@nativescript/firebase-core'
remoteConfig().settings.minimumFetchIntervalMillis = 30000

读取参数值

要读取应用中已获取和激活的参数,您可以 读取单个参数一次读取所有参数

读取单个参数

要从激活的参数值中读取单个参数值,请在 Remote Config 对象上调用 getValue 方法。 getValue 方法返回一个 ConfigValue 对象,您可以使用它将值获取为特定类型(例如字符串、数字、布尔值等)。

TS
import { firebase } from '@nativescript/firebase-core'

const awesomeNewFeature = firebase()
  .remoteConfig()
  .getValue('awesome_new_feature')

// resolves value to string
if (awesomeNewFeature.asString() === 'enabled') {
  enableAwesomeNewFeature()
}
// resolves value to number
// if it is not a number or source is 'static', the value will be 0
if (awesomeNewFeature.asNumber() === 5) {
  enableAwesomeNewFeature()
}
// resolves value to boolean
// if value is any of the following: '1', 'true', 't', 'yes', 'y', 'on', it will resolve to true
// if source is 'static', value will be false
if (awesomeNewFeature.asBoolean() === true) {
  enableAwesomeNewFeature()
}

一次读取所有参数

要一次读取 Remote Config 对象中的所有参数,请调用 getAll 方法。 getAll 方法返回一个对象,其中参数键作为对象键, ConfigValue 对象作为对象值。

TS
import { firebase } from '@nativescript/firebase-core'

const parameters = firebase().remoteConfig().getAll()

Object.entries(parameters).forEach((item) => {
  const [key, entry] = item
  console.log('Key: ', key)
  console.log('Source: ', entry.getSource())
  console.log('Value: ', entry.asString())
})

获取参数值的来源

读取值时,它包含有关参数的源数据。如果在获取和激活值之前读取值,则该值将回退到设置的默认应用内值。如果您需要验证从模块返回的值是本地值还是远程值,请在 ConfigValue 对象上调用 getSource 方法

TS
import { firebase } from '@nativescript/firebase-core'

const awesomeNewFeature: ConfigValue = firebase()
  .remoteConfig()
  .getValue('awesome_new_feature')

if (awesomeNewFeature.getSource() === 'remote') {
  console.log('Parameter value was from the Firebase servers.')
} else if (awesomeNewFeature.getSource() === 'default') {
  console.log('Parameter value was from a default value.')
} else {
  console.log('Parameter value was from a locally cached value.')
}

API

RemoteConfig 类

Android

TS
import { firebase } from '@nativescript/firebase-core'

remoteConfigAndroid: com.google.firebase.remoteconfig.FirebaseRemoteConfig =
  firebase().remoteConfig().android

一个 只读 属性,它返回由 RemoteConfig 类实例包装的 Android 的原生对象。


iOS

TS
import { firebase } from '@nativescript/firebase-core'

remoteConfigIos: FIRRemoteConfig = firebase().remoteConfig().ios

一个 只读 属性,它返回由 RemoteConfig 类实例包装的 iOS 的原生对象。


应用

TS
import { firebase } from '@nativescript/firebase-core'

remoteConfigApp: FirebaseApp = firebase().remoteConfig().app

一个 只读 属性,它返回当前应用的 FirebaseApp 实例。


fetchTimeMillis

TS
import { firebase } from '@nativescript/firebase-core'

remoteConfigFetchTimeMillis: number = firebase().remoteConfig().fetchTimeMillis

一个 只读 属性,它返回上次成功获取的时间戳(自纪元以来的毫秒数),无论获取是否已激活。


lastFetchStatus

TS
import { firebase } from '@nativescript/firebase-core';

remoteConfigLastFetchStatus: 'success' | 'failure' | 'no_fetch_yet' | 'throttled' = firebase().remoteConfig().lastFetchStatus;

一个 只读 属性,它返回最近一次获取尝试的状态。


设置

TS
import { firebase } from '@nativescript/firebase-core'

remoteConfigSettings: ConfigSettings = firebase().remoteConfig().settings
// or
firebase().remoteConfig().settings = {
  fetchTimeMillis: 43200000,
  minimumFetchIntervalMillis: 30000,
}

获取或设置此 RemoteConfig 实例的设置。


activate()

TS
import { firebase } from '@nativescript/firebase-core'

activated: boolean = await firebase().remoteConfig().activate()

异步激活最近获取的配置,以便获取的键值对生效。有关更多信息,请参阅 Firebase 网站上的 activate()


ensureInitialized()

TS
import { firebase } from '@nativescript/firebase-core'

await firebase().remoteConfig().ensureInitialized()

fetch()

TS
import { firebase } from '@nativescript/firebase-core'

await firebase().remoteConfig().fetch(expirationDurationSeconds)

从远程配置后端获取参数值,遵循默认或指定的最小获取间隔。有关更多信息,请参阅 Firebase 网站上的 fetch()

参数类型描述
expirationDurationSeconds数字

fetchAndActivate()

TS
import { firebase } from '@nativescript/firebase-core'

activated: boolean = await firebase().remoteConfig().fetchAndActivate()

异步获取并激活获取的配置。有关更多信息,请参阅 Firebase 网站上的 fetchAndActivate()


getAll()

TS
import { firebase } from '@nativescript/firebase-core'

parameters: Record<string, ConfigValue> = firebase().remoteConfig().getAll()

返回包含远程配置中所有参数的对象。


getBoolean()

TS
import { firebase } from '@nativescript/firebase-core'

value: boolean = firebase().remoteConfig().getBoolean(key)

将给定键的参数值作为布尔值返回。

参数类型描述
key字符串要获取的参数的键。

getNumber()

TS
import { firebase } from '@nativescript/firebase-core'

value: number = firebase().remoteConfig().getNumber(key)

将给定键的参数值作为数字返回。

参数类型描述
key字符串要获取的参数的键。

getString()

TS
import { firebase } from '@nativescript/firebase-core'

value: string = firebase().remoteConfig().getString(key)

将给定键的参数值作为字符串返回。

参数类型描述
key字符串要获取的参数的键。

getValue()

TS
import { firebase } from '@nativescript/firebase-core'

value: ConfigValue = firebase().remoteConfig().getValue(key)

将给定键的参数值作为 ConfigValue 返回。

参数类型描述
key字符串要获取的参数的键。

reset()

TS
import { firebase } from '@nativescript/firebase-core'

await firebase().remoteConfig().reset()

删除所有已激活、已获取和默认配置,并重置所有 Firebase 远程配置设置。


setDefaults()

TS
import { firebase } from '@nativescript/firebase-core'

await firebase().remoteConfig().setDefaults(defaults)

ConfigDefaults 对象设置默认配置。

参数类型描述
defaultsConfigDefaults要设置的默认配置对象。

ConfigDefaults

TS
interface ConfigDefaults {
  [key: string]: number | string | boolean
}

setDefaultsFromResource()

TS
import { firebase } from '@nativescript/firebase-core'

await firebase().remoteConfig().setDefaultsFromResource(resourceName)

使用 XML 资源设置默认配置。

参数类型描述
resourceName字符串包的 res 文件夹中 XML 资源的资源名称。

ConfigValue 对象

此对象由 getValue() 方法返回,并表示给定键的参数值。它提供了几种方法来获取作为布尔值、数字或字符串的值。

android

TS
configValue: ConfigValue = firebase().remoteConfig().getValue(key)

configValueAndroid: com.google.firebase.remoteconfig.FirebaseRemoteConfigValue =
  configValue.android

返回 Android 的 ConfigValue 实例。


ios

TS
configValue: ConfigValue = firebase().remoteConfig().getValue(key)

configValueIOS: FIRRemoteConfigValue = configValue.ios

返回 iOS 的 ConfigValue 实例。


asBoolean()

TS
configValue: ConfigValue = firebase().remoteConfig().getValue(key)

value: boolean = configValue.asBoolean()

将参数值作为布尔值获取。


asNumber()

TS
configValue: ConfigValue = firebase().remoteConfig().getValue(key)

value: number = configValue.asNumber()

将参数值作为数字获取。


asString()

TS
configValue: ConfigValue = firebase().remoteConfig().getValue(key)

value: string = configValue.asString()

将参数值作为字符串获取。


getSource()

TS
configValue: ConfigValue = firebase().remoteConfig().getValue(key)

source: 'default' | 'static' | 'remote' = configValue.getSource();

获取参数值的来源。


许可证

Apache 许可证版本 2.0

上一个
性能
下一个
存储