- 版本:3.3.2
- GitHub: https://github.com/NativeScript/firebase
- NPM: https://npmjs.net.cn/package/%40nativescript%2Ffirebase-remote-config
- 下载量
- 昨天: 23
- 上周: 209
- 上个月: 897
@nativescript/firebase-remote-config
内容
简介
此插件允许您在 NativeScript 应用中使用 Firebase Remote Config 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 控制台 并选择您的项目。
- 在 远程配置 仪表板中,单击 创建配置 以创建参数。
- 您可以通过以下两种选项之一添加默认应用内参数值。在这两种选项中,都应在应用的生命周期早期将值添加到远程配置对象中,理想情况下在引导文件中(例如
app.ts
或main.ts
)- 下载并添加包含参数值的
.xml
文件到您的应用。- 通过调用 setDefaultsFromResource 方法将
.xml
文件中的应用内默认参数添加到远程配置对象中。
import { firebase } from '@nativescript/firebase-core';
firebase()
.remoteConfig()
.setDefaultsFromResource("remote_config_defaults")
.then(() => {
console.log('Default values set.');
}); - 通过调用 setDefaultsFromResource 方法将
- 通过将对象传递给 setDefaults 方法将应用内参数值添加到远程配置对象中。
import { 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方法。该方法返回一个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方法。该方法返回一个对象,其中参数键作为对象键,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());
});
获取参数值的来源
当读取值时,它包含有关参数的源数据。如果在一个值被获取和激活之前读取该值,则该值将回退到应用中设置的默认值。如果您需要验证从模块返回的值是本地还是远程,请调用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原生对象。
app
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;
一个只读属性,返回最近一次获取尝试的状态。
settings
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 |
字符串 |
XML资源在包的res文件夹中的资源名称。 |
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 License Version 2.0