@nativescript/firebase-remote-config
NativeScript Firebase - 远程配置
npm i --save @nativescript/firebase-remote-config

@nativescript/firebase-remote-config

内容

简介

此插件允许您在 NativeScript 应用中使用 Firebase Remote Config API。

image

为您的应用设置 Firebase

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

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

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

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

创建应用内默认参数

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

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

  1. Firebase 控制台 并选择您的项目。
  2. 远程配置 仪表板中,单击 创建配置 以创建参数。
  3. 您可以通过以下两种选项之一添加默认应用内参数值。在这两种选项中,都应在应用的生命周期早期将值添加到远程配置对象中,理想情况下在引导文件中(例如 app.tsmain.ts
    1. 下载并添加包含参数值的 .xml 文件到您的应用。
      • 通过调用 setDefaultsFromResource 方法将 .xml 文件中的应用内默认参数添加到远程配置对象中。
      import { firebase } from '@nativescript/firebase-core';

      firebase()
      .remoteConfig()
      .setDefaultsFromResource("remote_config_defaults")
      .then(() => {
      console.log('Default values set.');
      });
    2. 通过将对象传递给 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