插件
远程配置
@nativescript/firebase-remote-config
内容
简介
此插件允许您在 NativeScript 应用中使用 Firebase 远程配置 API。
为 Firebase 设置您的应用
在启用 Firebase 远程配置之前,您需要为 Firebase 设置您的应用。要为您的 NativeScript 应用设置和初始化 Firebase,请按照 @nativescript/firebase-core 插件文档中的说明操作。
将 Firebase 远程配置 SDK 添加到您的应用
要将 Firebase 远程配置添加到您的应用,请按照以下步骤操作
- 通过在项目根目录中运行以下命令安装
@nativescript/firebase-remote-config
插件。
npm install @nativescript/firebase-remote-config
- 通过导入
@nativescript/firebase-remote-config
模块来添加 SDK。您应该在您的应用中导入此模块一次,理想情况下是在主文件中(例如app.ts
或main.ts
)。
import '@nativescript/firebase-remote-config'
创建应用内默认参数
默认应用内值有助于确保您的应用程序代码在设备尚未从远程服务器检索值的情况下按预期运行。
要创建默认的应用内远程配置参数,请按照以下步骤操作
Firebase 控制台 并选择您的项目。
在“远程配置”仪表板中,单击“创建配置”以创建参数。
您可以通过以下两种选项之一添加默认的应用内参数值。在这两种选项中,请在应用生命周期的早期将值添加到 Remote Config 对象,理想情况下是在引导文件中(例如
app.ts
或main.ts
)下载并将包含参数值的
.xml
文件添加到您的应用。- 通过调用 setDefaultsFromResource 方法将
.xml
文件中的应用内默认参数添加到 Remote Config 对象。
TSimport { firebase } from '@nativescript/firebase-core' firebase() .remoteConfig() .setDefaultsFromResource('remote_config_defaults') .then(() => { console.log('Default values set.') })
- 通过调用 setDefaultsFromResource 方法将
通过将应用内参数值作为对象传递给 setDefaults 方法,将它们添加到 Remote Config 对象。
TSimport { firebase } from '@nativescript/firebase-core' firebase() .remoteConfig() .setDefaults({ awesome_new_feature: 'disabled', }) .then(() => { console.log('Default values set.') })
在远程配置后端设置参数值
要创建覆盖应用内值的新服务器端默认值,请参阅 在远程配置后端设置参数值
获取和激活值
在远程配置后端创建参数后,您可以从服务器获取它们并在您的应用中激活它们。您可以先从服务器获取值,然后再激活它们,或者可以使用 fetchAndActivate 方法将这两个任务组合成一个流程。
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 方法
import { firebase } from '@nativescript/firebase-core'
// Fetch and cache for 5 minutes
await firebase().remoteConfig().fetch(300)
- 要完全绕过缓存,您可以传递值
0
。注意
请注意,如果请求值过于频繁,Firebase 可能会开始拒绝您的请求。
:::
- 您还可以通过将
RemoteConfigSettings
对象的minimumFetchIntervalMillis
属性设置为缓存值的毫秒数来应用全局缓存频率。这可以在应用启动前的引导文件中完成
import { firebase } from '@nativescript/firebase-core'
remoteConfig().settings.minimumFetchIntervalMillis = 30000
读取参数值
要读取应用中已获取和激活的参数,您可以 读取单个参数 或 一次读取所有参数。
读取单个参数
要从激活的参数值中读取单个参数值,请在 Remote Config 对象上调用 getValue 方法。 getValue 方法返回一个 ConfigValue 对象,您可以使用它将值获取为特定类型(例如字符串、数字、布尔值等)。
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 对象作为对象值。
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 方法
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
import { firebase } from '@nativescript/firebase-core'
remoteConfigAndroid: com.google.firebase.remoteconfig.FirebaseRemoteConfig =
firebase().remoteConfig().android
一个 只读
属性,它返回由 RemoteConfig 类实例包装的 Android 的原生对象。
iOS
import { firebase } from '@nativescript/firebase-core'
remoteConfigIos: FIRRemoteConfig = firebase().remoteConfig().ios
一个 只读
属性,它返回由 RemoteConfig 类实例包装的 iOS 的原生对象。
应用
import { firebase } from '@nativescript/firebase-core'
remoteConfigApp: FirebaseApp = firebase().remoteConfig().app
一个 只读
属性,它返回当前应用的 FirebaseApp 实例。
fetchTimeMillis
import { firebase } from '@nativescript/firebase-core'
remoteConfigFetchTimeMillis: number = firebase().remoteConfig().fetchTimeMillis
一个 只读
属性,它返回上次成功获取的时间戳(自纪元以来的毫秒数),无论获取是否已激活。
lastFetchStatus
import { firebase } from '@nativescript/firebase-core';
remoteConfigLastFetchStatus: 'success' | 'failure' | 'no_fetch_yet' | 'throttled' = firebase().remoteConfig().lastFetchStatus;
一个 只读
属性,它返回最近一次获取尝试的状态。
设置
import { firebase } from '@nativescript/firebase-core'
remoteConfigSettings: ConfigSettings = firebase().remoteConfig().settings
// or
firebase().remoteConfig().settings = {
fetchTimeMillis: 43200000,
minimumFetchIntervalMillis: 30000,
}
获取或设置此 RemoteConfig 实例的设置。
activate()
import { firebase } from '@nativescript/firebase-core'
activated: boolean = await firebase().remoteConfig().activate()
异步激活最近获取的配置,以便获取的键值对生效。有关更多信息,请参阅 Firebase 网站上的 activate()。
ensureInitialized()
import { firebase } from '@nativescript/firebase-core'
await firebase().remoteConfig().ensureInitialized()
fetch()
import { firebase } from '@nativescript/firebase-core'
await firebase().remoteConfig().fetch(expirationDurationSeconds)
从远程配置后端获取参数值,遵循默认或指定的最小获取间隔。有关更多信息,请参阅 Firebase 网站上的 fetch()。
参数 | 类型 | 描述 |
---|---|---|
expirationDurationSeconds | 数字 |
fetchAndActivate()
import { firebase } from '@nativescript/firebase-core'
activated: boolean = await firebase().remoteConfig().fetchAndActivate()
异步获取并激活获取的配置。有关更多信息,请参阅 Firebase 网站上的 fetchAndActivate()。
getAll()
import { firebase } from '@nativescript/firebase-core'
parameters: Record<string, ConfigValue> = firebase().remoteConfig().getAll()
返回包含远程配置中所有参数的对象。
getBoolean()
import { firebase } from '@nativescript/firebase-core'
value: boolean = firebase().remoteConfig().getBoolean(key)
将给定键的参数值作为布尔值返回。
参数 | 类型 | 描述 |
---|---|---|
key | 字符串 | 要获取的参数的键。 |
getNumber()
import { firebase } from '@nativescript/firebase-core'
value: number = firebase().remoteConfig().getNumber(key)
将给定键的参数值作为数字返回。
参数 | 类型 | 描述 |
---|---|---|
key | 字符串 | 要获取的参数的键。 |
getString()
import { firebase } from '@nativescript/firebase-core'
value: string = firebase().remoteConfig().getString(key)
将给定键的参数值作为字符串返回。
参数 | 类型 | 描述 |
---|---|---|
key | 字符串 | 要获取的参数的键。 |
getValue()
import { firebase } from '@nativescript/firebase-core'
value: ConfigValue = firebase().remoteConfig().getValue(key)
将给定键的参数值作为 ConfigValue 返回。
参数 | 类型 | 描述 |
---|---|---|
key | 字符串 | 要获取的参数的键。 |
reset()
import { firebase } from '@nativescript/firebase-core'
await firebase().remoteConfig().reset()
删除所有已激活、已获取和默认配置,并重置所有 Firebase 远程配置设置。
setDefaults()
import { firebase } from '@nativescript/firebase-core'
await firebase().remoteConfig().setDefaults(defaults)
从 ConfigDefaults 对象设置默认配置。
参数 | 类型 | 描述 |
---|---|---|
defaults | ConfigDefaults | 要设置的默认配置对象。 |
ConfigDefaults
interface ConfigDefaults {
[key: string]: number | string | boolean
}
setDefaultsFromResource()
import { firebase } from '@nativescript/firebase-core'
await firebase().remoteConfig().setDefaultsFromResource(resourceName)
使用 XML
资源设置默认配置。
参数 | 类型 | 描述 |
---|---|---|
resourceName | 字符串 | 包的 res 文件夹中 XML 资源的资源名称。 |
ConfigValue 对象
此对象由 getValue() 方法返回,并表示给定键的参数值。它提供了几种方法来获取作为布尔值、数字或字符串的值。
android
configValue: ConfigValue = firebase().remoteConfig().getValue(key)
configValueAndroid: com.google.firebase.remoteconfig.FirebaseRemoteConfigValue =
configValue.android
返回 Android 的 ConfigValue 实例。
ios
configValue: ConfigValue = firebase().remoteConfig().getValue(key)
configValueIOS: FIRRemoteConfigValue = configValue.ios
返回 iOS 的 ConfigValue 实例。
asBoolean()
configValue: ConfigValue = firebase().remoteConfig().getValue(key)
value: boolean = configValue.asBoolean()
将参数值作为布尔值获取。
asNumber()
configValue: ConfigValue = firebase().remoteConfig().getValue(key)
value: number = configValue.asNumber()
将参数值作为数字获取。
asString()
configValue: ConfigValue = firebase().remoteConfig().getValue(key)
value: string = configValue.asString()
将参数值作为字符串获取。
getSource()
configValue: ConfigValue = firebase().remoteConfig().getValue(key)
source: 'default' | 'static' | 'remote' = configValue.getSource();
获取参数值的来源。
许可证
Apache 许可证版本 2.0