동적 구성 및 동적 엔드포인트 업데이트¶
수동 동기화를 통한 동적 구성¶
사용 방법¶
FTMobileAgent를 사용하여 동적 구성을 수동으로 동기화합니다. 자동 업데이트가 요구 사항을 충족하지 못하는 경우 수동 호출을 통해 업데이트 시점을 조정합니다.
FTMobileConfig.remoteConfiguration = YES로 설정된 경우에만 수동 동기화 동적 구성 메서드가 활성화됩니다.
/// 원격 구성을 수동으로 업데이트합니다. 호출 빈도는 FTMobileConfig.remoteConfigMiniUpdateInterval의 영향을 받습니다.
+ (void)updateRemoteConfig;
/// 원격 구성을 수동으로 업데이트합니다. 이 메서드는 FTMobileConfig.remoteConfigMiniUpdateInterval 구성을 무시합니다.
/// - Parameters:
/// - miniUpdateInterval: 원격 구성 시간 간격(초) [0,)
/// - completion: 요청 완료 후 콜백입니다. 콜백에서 모델의 사용자 정의 조정을 지원합니다.
+ (void)updateRemoteConfigWithMiniUpdateInterval:(NSInteger)miniUpdateInterval
completion:(nullable FTRemoteConfigFetchCompletionBlock)completion;
/// 원격 구성을 수동으로 업데이트합니다. 호출 빈도는 FTMobileConfig.remoteConfigMiniUpdateInterval의 영향을 받습니다.
open class func updateRemoteConfig()
/// 원격 구성을 수동으로 업데이트합니다. 이 메서드는 FTMobileConfig.remoteConfigMiniUpdateInterval 구성을 무시합니다.
/// - Parameters:
/// - miniUpdateInterval: 원격 구성 시간 간격(초) [0,)
/// - completion: 요청 완료 후 콜백입니다. 콜백에서 모델의 사용자 정의 조정을 지원합니다.
open class func updateRemoteConfig(withMiniUpdateInterval miniUpdateInterval: Int, completion: FTRemoteConfigFetchCompletionBlock? = nil)
원격 구성 가져오기 콜백 및 사용자 정의 구성¶
SDK >= 1.5.19부터
FTRemoteConfigFetchCompletionBlock의 반환 값을 통해 최종 구성을 사용자 정의할 수 있습니다.
/**
* @brief 원격 구성 가져오기 완료 콜백 블록 유형
* @details 이 블록은 원격 구성 가져오기/파싱 결과를 수신하고 SDK에서 최종적으로 사용할 구성 모델을 반환하는 데 사용됩니다. SDK는 반환된 결과에 따라 해당 기능을 조정합니다.
*
* @param success 부울 값, 가져오기/파싱 성공 여부
* - YES: 작업 성공, 구성 데이터가 비어 있지 않음을 보장하지 않음
* - NO: 작업 실패(기능이 활성화되지 않음/최소 시간 간격에 도달하지 않음/네트워크 예외/데이터 파싱 실패 등)
* @param error 오류 정보 개체입니다. success=NO인 경우에만 유효한 오류 세부 정보를 반환하며, success=YES인 경우 항상 nil입니다.
* @param model 구조화된 구성 모델입니다. success=YES이고 구성 데이터가 비어 있지 않은 경우에만 유효한 인스턴스를 반환하며, 그 외의 경우 nil을 반환합니다.
* @param content 원시 구성 딕셔너리입니다. 구조화되지 않은 원시 데이터입니다. success=YES이고 구성 데이터가 비어 있지 않은 경우에만 유효한 딕셔너리를 반환하며, 그 외의 경우 nil을 반환합니다.
*
* @return FTRemoteConfigModel 선택적 인스턴스, SDK에서 최종적으로 사용하는 구성 모델
* - 성공 시나리오(success=YES):
* 1. nil이 아닌 인스턴스 반환: SDK는 수정된 모델을 사용하여 기능을 조정합니다.
* 2. nil 반환: SDK는 원래 파싱된 모델(있는 경우)을 사용합니다.
* - 실패 시나리오(success=NO):
* nil을 반환해야 합니다. SDK는 이 콜백 결과를 무시합니다.
*/
typedef FTRemoteConfigModel*_Nullable(^FTRemoteConfigFetchCompletionBlock)(BOOL success,
NSError * _Nullable error,
FTRemoteConfigModel * _Nullable model,
NSDictionary<NSString *, id> * _Nullable content);
콜백 우선순위: +updateRemoteConfigWithMiniUpdateInterval:completion:(수동 메서드 전용 콜백) > FTMobileConfig.remoteConfigFetchCompletionBlock(전역 통합 콜백)
사용 예시
현재 수동 동기화 메서드의 콜백 예시만 보여줍니다. 전역 remoteConfigFetchCompletionBlock의 사용 로직은 이 예시와 동일합니다.
[FTMobileAgent updateRemoteConfigWithMiniUpdateInterval:0 completion:^FTRemoteConfigModel * _Nullable(BOOL success, NSError * _Nullablererror, FTRemoteConfigModel * _Nullable model, NSDictionary<NSString *,id> * _Nullable content) {
if (error) {
NSLog(@"remoteConfigFetch error:%@",error.description);
}
// 작업 성공 시 구성 데이터 처리
if (success) {
// 원격 구성의 사용자 정의 환경 변수 값 가져오기
// 예: 특정 사용자(uid = @"user_1")를 조정해야 합니다.
NSString *userId = content[@"custom_userid"];
if ([userId isEqualToString:@"user_1"]) {
model.rumSampleRate = @(1);
model.logSampleRate = @(1);
model.traceSampleRate = @(1);
}
}
// 수정된 모델 반환(수정되지 않은 경우 model을 반환하는 것은 nil을 반환하는 것과 동일하며, 둘 다 원본 모델을 사용함)
return model;
}];
FTMobileAgent.updateRemoteConfig(withMiniUpdateInterval: 0) { (success: Bool, error: Error?, model: FTRemoteConfigModel?, content: [String: Any]?) -> FTRemoteConfigModel? in
if let error = errofr {
print("remoteConfigFetch error:\(error.localizedDescription)")
}
// 작업 성공 시 구성 데이터 처리
if success {
// 원격 구성의 사용자 정의 환경 변수 값 가져오기
// 예: 특정 사용자(uid = @"user_1")를 조정해야 합니다.
let userId = content?["custom_userid"] as? String
if userId == "user_1" {
model?.rumSampleRate = 1
model?.logSampleRate = 1
model?.traceSampleRate = 1
}
}
// 수정된 모델 반환(수정되지 않은 경우 model을 반환하는 것은 nil을 반환하는 것과 동일하며, 둘 다 원본 모델을 사용함)
return model
}
동적 엔드포인트 업데이트¶
FTMobileAgent를 사용하여 SDK 런타임 중에 데이터 보고 엔드포인트를 동적으로 전환합니다. 설정이 성공하면 후속 데이터가 새 엔드포인트를 통해 계속 업로드됩니다.
SDK >= 1.5.21부터
setDatakitURL및setDatawayURL:clientToken:을 지원합니다.setDatakitURL과setDatawayURL:clientToken:중 하나를 선택하여 사용하십시오.setDatawayURL:clientToken:을 사용하는 경우 새clientToken도 함께 전달해야 합니다.
사용 사례 설명¶
FTMobileConfig는 초기화 시 datakitUrl 또는 datawayUrl을 전달하지 않는 것을 지원합니다. 이 시나리오에서 SDK는 데이터 수집을 먼저 수행하지만 업로드하지는 않습니다.
이후 [FTMobileAgent setDatakitURL:] 또는 [FTMobileAgent setDatawayURL:clientToken:]을 호출하여 보고 엔드포인트를 동적으로 설정하면 SDK가 로컬 캐시 사용을 시작하고 데이터를 보고합니다.
업로드 엔드포인트가 설정되지 않은 기간 동안 수집된 데이터는 여전히 로컬 캐시 상한의 제한을 받습니다. 캐시 상한은 주로 다음 구성의 영향을 받습니다.
FTLoggerConfig.logCacheLimitCountFTRumConfig.rumCacheLimitCountFTMobileConfig.enableLimitWithDbSize에 해당하는 데이터베이스 캐시 상한
캐시가 상한에 도달하면 초과 데이터는 폐기될 수 있습니다. 따라서 이 모드에서는 가능한 한 빨리 업로드 엔드포인트를 설정하거나 비즈니스 시나리오에 맞게 캐시 제한을 적절히 설정하는 것이 좋습니다.
| 메서드 이름 | 유형 | 필수 | 설명 |
|---|---|---|---|
| setDatakitURL | NSString | 예 | Datakit 보고 엔드포인트를 동적으로 설정합니다. 설정에 성공하면 SDK는 새 Datakit 엔드포인트로 데이터를 계속 업로드합니다. |
| setDatawayURL:clientToken: | NSString, NSString | 예 | Dataway 보고 엔드포인트와 clientToken을 동적으로 설정합니다. 설정에 성공하면 SDK는 새 Dataway 엔드포인트로 데이터를 계속 업로드합니다. |