Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기

프로그래밍 방식으로 원격 구성 수정

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

이 문서에서는 원격 구성 템플릿 이라고 하는 JSON 형식 매개변수 및 조건 집합을 프로그래밍 방식으로 읽고 수정하는 방법을 설명합니다. 이렇게 하면 클라이언트 앱이 클라이언트 라이브러리를 사용하여 가져올 수 있는 백엔드에서 템플릿을 변경할 수 있습니다.

이 가이드에 설명된 원격 구성 REST API 또는 Admin SDK 를 사용하면 Firebase 콘솔에서 템플릿 관리를 건너뛰고 원격 구성 변경 사항을 자체 프로세스에 직접 통합할 수 있습니다. 예를 들어 원격 구성 백엔드 API를 사용하여 다음을 수행할 수 있습니다.

  • 원격 구성 업데이트 예약 . cron 작업과 함께 API 호출을 사용하면 정기적인 일정에 따라 원격 구성 값을 변경할 수 있습니다.
  • 자체 독점 시스템에서 Firebase 원격 구성으로 효율적으로 전환하기 위해 구성 값을 일괄 가져옵니다 .
  • Firebase용 Cloud Functions와 함께 원격 구성을 사용 하여 서버 측에서 발생하는 이벤트에 따라 앱의 값을 변경합니다. 예를 들어 원격 구성을 사용하여 앱의 새 기능을 홍보한 다음 충분한 사람들이 새 기능과 상호작용했음을 감지하면 해당 홍보를 자동으로 끌 수 있습니다.

    맞춤 도구 및 서버와 상호작용하는 원격 구성 백엔드를 보여주는 다이어그램

이 가이드의 다음 섹션에서는 원격 구성 백엔드 API로 수행할 수 있는 작업에 대해 설명합니다. REST API를 통해 이러한 작업을 수행하는 일부 코드를 검토하려면 다음 샘플 앱 중 하나를 참조하세요.

Firebase Admin SDK를 사용하여 원격 구성 수정

Admin SDK는 권한 있는 환경에서 Firebase와 상호작용할 수 있게 해주는 서버 라이브러리 집합입니다. 원격 구성에 대한 업데이트를 수행하는 것 외에도 Admin SDK를 사용하면 Firebase 인증 토큰의 생성 및 확인, 실시간 데이터베이스 읽기 및 쓰기 등을 수행할 수 있습니다. Admin SDK 전제 조건 및 설정에 대한 자세한 내용은 서버에 Firebase Admin SDK 추가 를 참조하십시오.

일반적인 원격 구성 흐름에서는 현재 템플릿을 가져오고 일부 매개변수 또는 매개변수 그룹 및 조건을 수정하고 템플릿을 검증한 다음 게시할 수 있습니다. 이러한 API 호출을 수행하기 전에 SDK의 요청을 승인해야 합니다.

SDK 초기화 및 API 요청 승인

매개변수 없이 Admin SDK를 초기화하면 SDK는 Google 애플리케이션 기본 사용자 인증 정보를 사용하고 FIREBASE_CONFIG 환경 변수에서 옵션을 읽습니다. FIREBASE_CONFIG 변수의 내용이 { 로 시작하면 JSON 개체로 구문 분석됩니다. 그렇지 않으면 SDK는 문자열이 옵션을 포함하는 JSON 파일의 이름이라고 가정합니다.

예를 들어:

Node.js

const admin = require('firebase-admin');
admin.initializeApp();

자바

FileInputStream serviceAccount = new FileInputStream("service-account.json");
FirebaseOptions options = FirebaseOptions.builder()
        .setCredentials(GoogleCredentials.fromStream(serviceAccount))
        .build();
FirebaseApp.initializeApp(options);

현재 원격 구성 템플릿 가져오기

원격 구성 템플릿으로 작업할 때는 템플릿에 버전이 지정되어 있으며 각 버전은 생성 시점부터 업데이트로 교체하는 시점까지 수명이 90일로 제한되어 있으며 총 300개의 저장 버전으로 제한된다는 점에 유의하세요. 자세한 내용은 템플릿 및 버전 관리 를 참조하십시오.

백엔드 API를 사용하여 원격 구성 템플릿의 현재 활성 버전을 JSON 형식으로 가져올 수 있습니다.

A/B Testing 실험에서 변형으로 특별히 생성된 매개변수 및 매개변수 값은 내보낸 템플릿에 포함되지 않습니다.

템플릿을 얻으려면:

Node.js

function getTemplate() {
  var config = admin.remoteConfig();
  config.getTemplate()
      .then(function (template) {
        console.log('ETag from server: ' + template.etag);
        var templateStr = JSON.stringify(template);
        fs.writeFileSync('config.json', templateStr);
      })
      .catch(function (err) {
        console.error('Unable to get template');
        console.error(err);
      });
}

자바

Template template = FirebaseRemoteConfig.getInstance().getTemplateAsync().get();
// See the ETag of the fetched template.
System.out.println("ETag from server: " + template.getETag());

원격 구성 매개변수 수정

프로그래밍 방식으로 원격 구성 매개변수 및 매개변수 그룹을 수정하고 추가할 수 있습니다. 예를 들어 "new_menu"라는 기존 매개변수 그룹에 계절 정보 표시를 제어하는 ​​매개변수를 추가할 수 있습니다.

Node.js

function addParameterToGroup(template) {
  template.parameterGroups['new_menu'].parameters['spring_season'] = {
    defaultValue: {
      useInAppDefault: true
    },
    description: 'spring season menu visibility.',
  };
}

자바

template.getParameterGroups().get("new_menu").getParameters()
        .put("spring_season", new Parameter()
                .setDefaultValue(ParameterValue.inAppDefault())
                .setDescription("spring season menu visibility.")
        );

API를 사용하면 새 매개변수 및 매개변수 그룹을 생성하거나 기본값, 조건부 값 및 설명을 수정할 수 있습니다. 모든 경우에 템플릿을 수정한 후 명시적으로 게시해야 합니다.

원격 구성 조건 수정

프로그래밍 방식으로 원격 구성 조건 및 조건부 값을 수정하고 추가할 수 있습니다. 예를 들어 새 조건을 추가하려면 다음을 수행하십시오.

Node.js

function addNewCondition(template) {
  template.conditions.push({
    name: 'android_en',
    expression: 'device.os == \'android\' && device.country in [\'us\', \'uk\']',
    tagColor: 'BLUE',
  });
}

자바

template.getConditions().add(new Condition("android_en",
        "device.os == 'android' && device.country in ['us', 'uk']", TagColor.BLUE));

모든 경우에 템플릿을 수정한 후 명시적으로 게시해야 합니다.

원격 구성 백엔드 API는 앱의 동작과 모양을 변경하는 데 사용할 수 있는 여러 조건 및 비교 연산자를 제공합니다. 이러한 조건에 대해 지원되는 조건 및 연산자에 대해 자세히 알아보려면 조건식 참조 를 참조하십시오.

원격 구성 템플릿 검증

선택적으로 다음과 같이 업데이트를 게시하기 전에 유효성을 검사할 수 있습니다.

Node.js

function validateTemplate(template) {
  admin.remoteConfig().validateTemplate(template)
      .then(function (validatedTemplate) {
        // The template is valid and safe to use.
        console.log('Template was valid and safe to use');
      })
      .catch(function (err) {
        console.error('Template is invalid and cannot be published');
        console.error(err);
      });
}

자바

try {
  Template validatedTemplate = FirebaseRemoteConfig.getInstance()
          .validateTemplateAsync(template).get();
  System.out.println("Template was valid and safe to use");
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Template is invalid and cannot be published");
    System.out.println(rcError.getMessage());
  }
}

이 유효성 검사 프로세스는 매개 변수 및 조건의 중복 키, 잘못된 조건 이름 또는 존재하지 않는 조건 또는 형식이 잘못된 etag와 같은 오류를 확인합니다. 예를 들어 허용된 키 수(2000개)보다 많은 키를 포함하는 요청은 Param count too large 오류 메시지를 반환합니다.

원격 구성 템플릿 게시

템플릿을 검색하고 원하는 업데이트로 수정한 후 게시할 수 있습니다. 이 섹션에 설명된 대로 템플릿을 게시하면 기존 구성 템플릿 전체가 업데이트된 파일로 대체되고 새 활성 템플릿에는 대체된 템플릿보다 하나 더 큰 버전 번호가 할당됩니다.

필요한 경우 REST API를 사용 하여 이전 버전으로 롤백 할 수 있습니다. 업데이트 오류의 위험을 줄이기 위해 게시하기 전에 유효성을 검사 할 수 있습니다.

원격 구성 개인화 및 조건은 다운로드한 템플릿에 포함되어 있으므로 다른 프로젝트에 게시하려고 할 때 다음 제한 사항을 알고 있어야 합니다.

  • 개인화는 프로젝트 간에 가져올 수 없습니다.

    예를 들어 프로젝트에서 개인화를 활성화하고 템플릿을 다운로드하고 편집하는 경우 동일한 프로젝트에 게시할 수 있지만 템플릿에서 개인화를 삭제하지 않는 한 다른 프로젝트에 게시할 수 없습니다.

  • 프로젝트 간에 조건을 가져올 수 있지만 게시하기 전에 특정 조건부 값(예: 앱 ID 또는 대상)이 대상 프로젝트에 있어야 합니다.

    예를 들어 iOS 의 플랫폼 값을 지정하는 조건을 사용하는 원격 구성 매개변수가 있는 경우 플랫폼 값은 모든 프로젝트에서 동일하므로 템플릿을 다른 프로젝트에 게시할 수 있습니다. 그러나 대상 프로젝트에 존재하지 않는 특정 앱 ID 또는 사용자 대상에 의존하는 조건이 포함된 경우 유효성 검사가 실패합니다.

  • 게시하려는 템플릿에 Google 애널리틱스에 의존하는 조건이 포함된 경우 대상 프로젝트에서 애널리틱스를 사용하도록 설정해야 합니다.

Node.js

function publishTemplate() {
  var config = admin.remoteConfig();
  var template = config.createTemplateFromJSON(
      fs.readFileSync('config.json', 'UTF8'));
  config.publishTemplate(template)
      .then(function (updatedTemplate) {
        console.log('Template has been published');
        console.log('ETag from server: ' + updatedTemplate.etag);
      })
      .catch(function (err) {
        console.error('Unable to publish template.');
        console.error(err);
      });
}

자바

try {
  Template publishedTemplate = FirebaseRemoteConfig.getInstance()
          .publishTemplateAsync(template).get();
  System.out.println("Template has been published");
  // See the ETag of the published template.
  System.out.println("ETag from server: " + publishedTemplate.getETag());
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Unable to publish template.");
    System.out.println(rcError.getMessage());
  }
}

REST API를 사용하여 원격 구성 수정

이 섹션에서는 https://firebaseremoteconfig.googleapis.com 에서 원격 구성 REST API의 주요 기능을 설명합니다. 자세한 내용은 API 참조 를 참조 하십시오.

API 요청을 인증하고 승인하기 위한 액세스 토큰 받기

Firebase 프로젝트는 앱 서버 또는 신뢰할 수 있는 환경에서 Firebase 서버 API를 호출하는 데 사용할 수 있는 Google 서비스 계정 을 지원합니다. 로컬에서 코드를 개발하거나 애플리케이션을 온프레미스에 배포하는 경우 이 서비스 계정을 통해 얻은 자격 증명을 사용하여 서버 요청에 권한을 부여할 수 있습니다.

서비스 계정을 인증하고 Firebase 서비스에 액세스할 수 있는 권한을 부여하려면 JSON 형식의 비공개 키 파일을 생성해야 합니다.

서비스 계정의 비공개 키 파일을 생성하려면 다음 안내를 따르세요.

  1. Firebase 콘솔에서 설정 > 서비스 계정 을 엽니다.

  2. 새 개인 키 생성 을 클릭한 다음 키 생성 을 클릭하여 확인합니다.

  3. 키가 포함된 JSON 파일을 안전하게 저장합니다.

서비스 계정을 통해 승인할 때 애플리케이션에 자격 증명을 제공하기 위한 두 가지 선택 사항이 있습니다. GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정하거나 코드에서 서비스 계정 키의 경로를 명시적으로 전달할 수 있습니다. 첫 번째 옵션은 더 안전하며 강력하게 권장됩니다.

환경 변수를 설정하려면:

환경 변수 GOOGLE_APPLICATION_CREDENTIALS 를 서비스 계정 키가 포함된 JSON 파일의 파일 경로로 설정합니다. 이 변수는 현재 셸 세션에만 적용되므로 새 세션을 열 경우 변수를 다시 설정하십시오.

리눅스 또는 macOS

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"

윈도우

PowerShell 사용:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"

위의 단계를 완료하면 애플리케이션 기본 사용자 인증 정보(ADC)가 암시적으로 사용자 인증 정보를 결정할 수 있으므로 Google 이외의 환경에서 테스트하거나 실행할 때 서비스 계정 사용자 인증 정보를 사용할 수 있습니다.

단기 OAuth 2.0 액세스 토큰을 검색하려면 기본 언어의 Google 인증 라이브러리 와 함께 Firebase 자격 증명을 사용하세요.

node.js

 function getAccessToken() {
  return admin.credential.applicationDefault().getAccessToken()
      .then(accessToken => {
        return accessToken.access_token;
      })
      .catch(err => {
        console.error('Unable to get access token');
        console.error(err);
      });
}

이 예에서 Google API 클라이언트 라이브러리는 JSON 웹 토큰 또는 JWT로 요청을 인증합니다. 자세한 내용은 JSON 웹 토큰 을 참조하세요.

파이썬

def _get_access_token():
  """Retrieve a valid access token that can be used to authorize requests.

  :return: Access token.
  """
  credentials = ServiceAccountCredentials.from_json_keyfile_name(
      'service-account.json', SCOPES)
  access_token_info = credentials.get_access_token()
  return access_token_info.access_token

자바

private static String getAccessToken() throws IOException {
  GoogleCredentials googleCredentials = GoogleCredentials
          .fromStream(new FileInputStream("service-account.json"))
          .createScoped(Arrays.asList(SCOPES));
  googleCredentials.refreshAccessToken();
  return googleCredentials.getAccessToken().getTokenValue();
}

액세스 토큰이 만료된 후 업데이트된 액세스 토큰을 검색하기 위해 토큰 새로 고침 메서드가 자동으로 호출됩니다.

원격 구성에 대한 액세스 권한을 부여하려면 https://www.googleapis.com/auth/firebase.remoteconfig 범위를 요청하세요.

원격 구성 템플릿 수정

원격 구성 템플릿으로 작업할 때는 템플릿에 버전이 지정되어 있으며 각 버전은 생성 시점부터 업데이트로 교체하는 시점까지 수명이 90일로 제한되어 있으며 총 300개의 저장 버전으로 제한된다는 점에 유의하세요. 자세한 내용은 템플릿 및 버전 관리 를 참조하십시오.

현재 원격 구성 템플릿 가져오기

백엔드 API를 사용하여 원격 구성 템플릿의 현재 활성 버전을 JSON 형식으로 가져올 수 있습니다.

A/B Testing 실험에서 변형으로 특별히 생성된 매개변수 및 매개변수 값은 내보낸 템플릿에 포함되지 않습니다.

다음 명령을 사용합니다.

곱슬 곱슬하다

curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -o filename

이 명령은 JSON 페이로드를 하나의 파일로 출력하고 헤더(Etag 포함)를 별도의 파일로 출력합니다.

원시 HTTP 요청

Host: firebaseremoteconfig.googleapis.com

GET /v1/projects/my-project-id/remoteConfig HTTP/1.1
Authorization: Bearer token
Accept-Encoding: gzip

이 API 호출은 후속 요청에 사용하는 ETag 를 포함하는 별도의 헤더와 함께 다음 JSON을 반환합니다.

원격 구성 템플릿 검증

선택적으로 업데이트를 게시하기 전에 유효성을 검사할 수 있습니다. 게시 요청에 URL 매개변수 ?validate_only=true 를 추가하여 템플릿 업데이트를 확인합니다. 응답에서 상태 코드 200과 접미사가 -0 인 업데이트된 etag는 업데이트가 성공적으로 검증되었음을 의미합니다. 200이 아닌 모든 응답은 게시하기 전에 수정해야 하는 오류가 JSON 데이터에 포함되어 있음을 나타냅니다.

원격 구성 템플릿 업데이트

템플릿을 검색하고 원하는 업데이트로 JSON 콘텐츠를 수정한 후 게시할 수 있습니다. 이 섹션에 설명된 대로 템플릿을 게시하면 기존 구성 템플릿 전체가 업데이트된 파일로 대체되고 새 활성 템플릿에는 대체된 템플릿보다 하나 더 큰 버전 번호가 할당됩니다.

필요한 경우 REST API를 사용 하여 이전 버전으로 롤백 할 수 있습니다. 업데이트 오류의 위험을 줄이기 위해 게시하기 전에 유효성을 검사 할 수 있습니다.

원격 구성 개인화 및 조건은 다운로드한 템플릿에 포함되어 있으므로 다른 프로젝트에 게시하려고 할 때 다음 제한 사항을 알고 있어야 합니다.

  • 개인화는 프로젝트 간에 가져올 수 없습니다.

    예를 들어 프로젝트에서 개인화를 활성화하고 템플릿을 다운로드하고 편집하는 경우 동일한 프로젝트에 게시할 수 있지만 템플릿에서 개인화를 삭제하지 않는 한 다른 프로젝트에 게시할 수 없습니다.

  • 프로젝트 간에 조건을 가져올 수 있지만 게시하기 전에 특정 조건부 값(예: 앱 ID 또는 대상)이 대상 프로젝트에 있어야 합니다.

    예를 들어 iOS 의 플랫폼 값을 지정하는 조건을 사용하는 원격 구성 매개변수가 있는 경우 플랫폼 값은 모든 프로젝트에서 동일하므로 템플릿을 다른 프로젝트에 게시할 수 있습니다. 그러나 대상 프로젝트에 존재하지 않는 특정 앱 ID 또는 사용자 대상에 의존하는 조건이 포함된 경우 유효성 검사가 실패합니다.

  • 게시하려는 템플릿에 Google 애널리틱스에 의존하는 조건이 포함된 경우 대상 프로젝트에서 애널리틱스를 사용하도록 설정해야 합니다.

곱슬 곱슬하다

curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -d @filename

curl 명령의 경우 "@" 문자와 파일 이름을 사용하여 내용을 지정할 수 있습니다.

원시 HTTP 요청

Host: firebaseremoteconfig.googleapis.com
PUT /v1/projects/my-project-id/remoteConfig HTTP/1.1
Content-Length: size
Content-Type: application/json; UTF8
Authorization: Bearer token
If-Match: expected ETag
Accept-Encoding: gzip
JSON_HERE

이것은 쓰기 요청이기 때문에 이 명령에 의해 ETag 가 수정되고 다음 PUT 명령의 응답 헤더에 업데이트된 ETag가 제공됩니다.

원격 구성 조건 수정

프로그래밍 방식으로 원격 구성 조건 및 조건부 값을 수정할 수 있습니다. REST API를 사용하면 템플릿을 게시하기 전에 템플릿을 직접 편집하여 조건을 수정해야 합니다.

{
  "conditions": [{
    "name": "android_english",
    "expression": "device.os == 'android' && device.country in ['us', 'uk']",
    "tagColor": "BLUE"
  }, {
    "name": "tenPercent",
    "expression": "percent <= 10",
    "tagColor": "BROWN"
  }],
  "parameters": {
    "welcome_message": {
      "defaultValue": {
        "value": "Welcome to this sample app"
      },
      "conditionalValues": {
        "tenPercent": {
          "value": "Welcome to this new sample app"
        }
      },
      "description": "The sample app's welcome message"
    },
    "welcome_message_caps": {
      "defaultValue": {
        "value": "false"
      },
      "conditionalValues": {
        "android_english": {
          "value": "true"
        }
      },
      "description": "Whether the welcome message should be displayed in all capital letters."
    }
  }
}

위의 수정은 먼저 조건 세트를 정의한 다음 각 매개변수에 대한 기본값 및 조건 기반 매개변수( 조건부 값 ) 값을 정의합니다. 또한 각 요소에 대한 선택적 설명을 추가합니다. 코드 주석과 마찬가지로 개발자용이며 앱에 표시되지 않습니다. 버전 제어를 위해 ETag 도 제공됩니다.

원격 구성 백엔드 API는 앱의 동작과 모양을 변경하는 데 사용할 수 있는 여러 조건 및 비교 연산자를 제공합니다. 이러한 조건에 대해 지원되는 조건 및 연산자에 대해 자세히 알아보려면 조건식 참조 를 참조하십시오.

HTTP 오류 코드

상태 코드 의미
200 성공적으로 업데이트됨
400 유효성 검사 오류가 발생했습니다. 예를 들어 허용된 키 수(2000개)보다 많은 키를 포함하는 요청은 Param count too large 오류 메시지와 함께 400(잘못된 요청)을 반환합니다. 또한 이 HTTPS 상태 코드는 다음 두 가지 상황에서 발생할 수 있습니다.
  • ETag 값을 마지막으로 검색한 이후 값 및 조건 집합이 업데이트되었기 때문에 버전 불일치 오류가 발생했습니다. 이 문제를 해결하려면 GET 명령을 사용하여 새 템플릿과 ETag 값을 가져오고 템플릿을 업데이트한 다음 해당 템플릿과 새 ETag 값을 사용하여 제출해야 합니다.
  • If-Match 헤더를 지정하지 않고 PUT 명령(원격 구성 템플릿 업데이트 요청)이 작성되었습니다.
401 승인 오류가 발생했습니다(액세스 토큰이 제공되지 않았거나 Cloud Developer Console에서 Firebase 원격 구성 REST API가 프로젝트에 추가되지 않음).
403 인증 오류가 발생했습니다(잘못된 액세스 토큰이 제공됨).
500 내부 오류가 발생했습니다. 이 오류가 발생 하면 Firebase 지원 티켓을 제출하세요.

상태 코드 200은 원격 구성 템플릿(프로젝트의 매개변수, 값 및 조건)이 업데이트되었으며 이제 이 프로젝트를 사용하는 앱에서 사용할 수 있음을 의미합니다. 다른 상태 코드는 이전에 존재했던 원격 구성 템플릿이 여전히 유효함을 나타냅니다.

템플릿 업데이트를 제출한 후 Firebase 콘솔로 이동하여 변경사항이 예상대로 표시되는지 확인합니다. 이는 조건의 순서가 평가 방식에 영향을 미치기 때문에 중요합니다( true 를 평가하는 첫 번째 조건이 적용됨).

ETag 사용 및 강제 업데이트

원격 구성 REST API는 엔터티 태그(ETag)를 사용하여 경합 상태 및 리소스 업데이트 중복을 방지합니다. ETag에 대한 자세한 내용은 ETag - HTTP 를 참조하십시오.

REST API의 경우 Google은 최신 GET 명령에서 제공한 ETag를 캐시하고 PUT 명령을 실행할 때 If-Match 요청 헤더에서 해당 ETag 값을 사용할 것을 권장합니다. PUT 명령 결과 HTTPS 상태 코드 409가 표시되면 새로운 GET 명령을 실행하여 다음 PUT 명령과 함께 사용할 새 ETag 및 템플릿을 획득해야 합니다.

다음과 같이 원격 구성 템플릿을 강제로 업데이트하여 ETag 및 ETag가 제공하는 보호를 우회할 수 있습니다. If-Match: * 그러나 이 접근 방식은 원격 구성에 대한 업데이트가 손실될 위험이 있으므로 권장되지 않습니다. 여러 클라이언트가 원격 구성 템플릿을 업데이트하는 경우 템플릿입니다. 이러한 종류의 충돌은 API를 사용하는 여러 클라이언트 또는 API 클라이언트와 Firebase 콘솔 사용자의 업데이트 충돌로 인해 발생할 수 있습니다.

원격 구성 템플릿 버전 관리에 대한 안내는 원격 구성 템플릿 및 버전 관리 를 참조하세요.