Firebase Remote Config를 사용하여 앱의 매개변수를 정의할 수 있습니다. 클라우드에서 해당 값을 업데이트할 수 있으므로, 스프레드시트의 모양을 수정하고 앱 업데이트를 배포하지 않고 앱의 동작을 제어할 수 있습니다. 이 가이드에서는 샘플 코드 몇 가지를 제공하는데, 이 모든 것이 Cloud Shell에서 firebase/quickstart-ios GitHub 저장소
1단계: 앱에 Remote Config 추가
아직 추가하지 않았다면 Apple 프로젝트에 Firebase를 추가합니다.
Remote Config의 경우 Google Analytics는 다음 항목에 필요합니다. 앱 인스턴스의 조건부 타겟팅 사용자 속성 및 잠재고객에 적용할 수 있습니다 그런 다음 나 프로젝트에서 Google Analytics를 사용 설정합니다.
다음 예와 같이 싱글톤 Remote Config 객체를 만듭니다.
Swift
remoteConfig = RemoteConfig.remoteConfig() let settings = RemoteConfigSettings() settings.minimumFetchInterval = 0 remoteConfig.configSettings = settings
Objective-C
self.remoteConfig = [FIRRemoteConfig remoteConfig]; FIRRemoteConfigSettings *remoteConfigSettings = [[FIRRemoteConfigSettings alloc] init]; remoteConfigSettings.minimumFetchInterval = 0; self.remoteConfig.configSettings = remoteConfigSettings;
이 객체는 인앱 매개변수 기본값을 저장하는 데 사용되며, 업데이트된 항목을 가져옵니다. 매개변수 값을 Remote Config 백엔드에서 적용하고, 가져올 때 제어 값을 앱에 제공할 수 있습니다.
개발 중에는 가져오기 간격 최솟값을 상대적으로 낮게 설정하는 것이 좋습니다. 자세한 내용은 제한을 참조하세요.
2단계: 인앱 매개변수 기본값 설정
Remote Config 객체에 인앱 매개변수 기본값을 설정하면 앱이 Remote Config 백엔드에 연결되기 전에 의도한 대로 작동하고 백엔드에 값이 설정되어 있지 않으면 기본값을 사용할 수 있습니다.
NSDictionary
객체 또는 plist 파일을 사용하여 매개변수 이름과 매개변수 기본값 집합을 정의합니다.백엔드 매개변수 값 Remote Config개를 이미 구성한 경우 모든 기본값을 포함하여 생성된
plist
파일을 다운로드할 수 있습니다. Xcode 프로젝트에 저장합니다.REST
curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=PLIST -o RemoteConfigDefaults.plist
Firebase 콘솔
매개변수 탭에서 메뉴를 열고 기본값 다운로드를 선택합니다.
메시지가 표시되면 iOS의 경우 .plist를 사용 설정하고 파일 다운로드를 클릭합니다.
다음 값을 사용하여 이러한 값을 Remote Config 객체에 추가합니다.
setDefaults:
다음 예시는 plist 파일에서 인앱 기본값을 설정합니다.Swift
remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")
Objective-C
[self.remoteConfig setDefaultsFromPlistFileName:@"RemoteConfigDefaults"];
3단계: 앱에서 사용할 매개변수 값 가져오기
이제 Remote Config 객체에서 매개변수 값을 가져올 수 있습니다. 나중에
Remote Config 백엔드에 값을 설정하고 가져온 다음 활성화합니다.
해당 값을 앱에서 사용할 수 있습니다. 그렇지 않으면 in-app 매개변수를 가져옵니다.
값을
setDefaults:
이 값을 가져오려면
configValueForKey:
드림
메서드를 사용하여 매개변수 키를 인수로 제공합니다.
4단계: 매개변수 값 설정
Firebase 콘솔 또는 Remote Config 백엔드 API, 인앱 값을 재정의하는 새로운 백엔드 기본값을 만들 수 있습니다. 사용자 타겟팅에 따라 달라집니다. 이 섹션 에서는 이러한 값을 만드는 Firebase 콘솔 단계를 안내합니다.
- Firebase 콘솔에서 프로젝트를 엽니다.
- 메뉴에서 Remote Config를 선택하여 Remote Config을 확인합니다. 대시보드에서 이 설정을 지정할 수 있습니다.
- 앱에 정의한 매개변수와 같은 이름으로 매개변수를 정의합니다. 각 매개변수에 기본값 및 조건부 값을 설정할 수 있으며 기본값은 이후에 해당하는 인앱 기본값을 재정의합니다. 자세한 내용은 Remote Config 매개변수 및 조건을 참고하세요.
5단계: 값 가져오기 및 활성화
Remote Config에서 매개변수 값을 가져오려면 다음을 호출합니다.
fetchWithCompletionHandler:
또는
fetchWithExpirationDuration:completionHandler:
메서드를 사용하여 축소하도록 요청합니다. 백엔드에 설정한 모든 값을 가져오고
Remote Config 객체에 캐시됩니다.
호출 한 번으로 값을 가져오고 활성화하려면 fetchAndActivateWithCompletionHandler:
를 사용합니다.
이 예시에서는 캐시되지 않은 Remote Config 백엔드에서 값을 가져옵니다.
값)에서 사용할 수 있도록 activateWithCompletionHandler:
를 호출하여
앱:
Swift
remoteConfig.fetch { (status, error) -> Void in if status == .success { print("Config fetched!") self.remoteConfig.activate { changed, error in // ... } } else { print("Config not fetched") print("Error: \(error?.localizedDescription ?? "No error available.")") } self.displayWelcome() }
Objective-C
[self.remoteConfig fetchWithCompletionHandler:^(FIRRemoteConfigFetchStatus status, NSError *error) { if (status == FIRRemoteConfigFetchStatusSuccess) { NSLog(@"Config fetched!"); [self.remoteConfig activateWithCompletion:^(BOOL changed, NSError * _Nullable error) { if (error != nil) { NSLog(@"Activate error: %@", error.localizedDescription); } else { dispatch_async(dispatch_get_main_queue(), ^{ [self displayWelcome]; }); } }]; } else { NSLog(@"Config not fetched"); NSLog(@"Error %@", error.localizedDescription); } }];
이러한 업데이트된 매개변수 값은 앱의 동작과 모양에 영향을 주므로 사용자 경험에 방해가 되지 않을 만한 시점, 예를 들어 사용자가 다음번에 앱을 열 때 등과 같은 상황에서 가져온 값을 활성화하는 것이 좋습니다. 자세한 내용과 예시는 원격 구성 로딩 전략을 참조하세요.
6단계: 실시간 업데이트 리슨
매개변수 값을 가져온 후 실시간 Remote Config를 사용하여 Remote Config 백엔드의 업데이트를 리슨합니다. 실시간 Remote Config는 사용 가능한 업데이트가 있을 때 연결된 기기에 신호를 보냅니다. 새 Remote Config를 게시한 후 자동으로 변경사항을 가져옵니다. 있습니다.
실시간 업데이트는 Apple 플랫폼용 Firebase SDK v10.7.0 이상에서 지원됩니다.
앱에서
addOnConfigUpdateListener
를 호출하여 업데이트 리슨을 시작하고 새로운 또는 업데이트된 매개변수 값을 자동으로 가져옵니다. 다음 예시는 업데이트를 리슨하고activateWithCompletionHandler
가 호출되면 새로 가져온 값을 사용하여 업데이트된 환영 메시지를 표시합니다.Swift
remoteConfig.addOnConfigUpdateListener { configUpdate, error in guard let configUpdate, error == nil else { print("Error listening for config updates: \(error)") } print("Updated keys: \(configUpdate.updatedKeys)") self.remoteConfig.activate { changed, error in guard error == nil else { return self.displayError(error) } DispatchQueue.main.async { self.displayWelcome() } } }
Objective-C
__weak __typeof__(self) weakSelf = self; [self.remoteConfig addOnConfigUpdateListener:^(FIRRemoteConfigUpdate * _Nonnull configUpdate, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error listening for config updates %@", error.localizedDescription); } else { NSLog(@"Updated keys: %@", configUpdate.updatedKeys); __typeof__(self) strongSelf = weakSelf; [strongSelf.remoteConfig activateWithCompletion:^(BOOL changed, NSError * _Nullable error) { if (error != nil) { NSLog(@"Activate error %@", error.localizedDescription); } dispatch_async(dispatch_get_main_queue(), ^{ [strongSelf displayWelcome]; }); }]; } }];
다음에 Remote Config의 새 버전을 게시하면 기기에서 변경 사항을 수신 대기하는 개발자는 완료를 호출하기만 하면 처리됩니다.
제한
앱에서 단기간에 가져오기를 너무 많이 수행하면 가져오기 호출이 제한되고 SDK는 FIRRemoteConfigFetchStatusThrottled
를 반환합니다. SDK 버전 6.3.0 이전에는 60분 동안 가져오기 요청 수가 5회로 제한되었지만 최신 버전에서는 좀 더 많이 허용됩니다.
앱을 개발하는 동안 앱 개발 및 테스트를 하면서 빠르게 반복하기 위해 캐시를 빈번하게(한 시간에 몇 번씩) 새로고치기 위해 가져오기를 자주 해야 할 수도 있습니다. 서버에서 구성을 업데이트하면 실시간 원격 구성 업데이트가 자동으로 캐시를 우회합니다. 개발자가 많은 프로젝트에서 빠르게 반복할 수 있도록 앱에서 가져오기 간격 최솟값(MinimumFetchInterval
)이 낮은 FIRRemoteConfigSettings
속성을 임시로 추가할 수 있습니다.
Remote Config의 기본 및 권장 프로덕션 가져오기 간격 12시간이며 12시간 동안 백엔드에서 구성을 두 번 이상 가져오지 않음을 의미합니다. 실제로 호출되는 가져오기 호출 수와 상관없이 창출될 수 있습니다 가져오기 간격 최솟값은 구체적으로 다음과 같은 순서로 결정됩니다.
fetch(long)
의 매개변수FIRRemoteConfigSettings.MinimumFetchInterval
의 매개변수- 기본값 12시간
다음 단계
아직 살펴보지 않았다면 Remote Config에서 살펴보세요. 사용 사례를 살펴보고 주요 개념 및 고급 전략 문서: