옵트아웃 (Opt-Out Tracking)

옵트아웃이 활성화되면 SDK는 모든 이벤트 전송을 중단합니다.

초기화 시 설정

let config = HackleConfigBuilder()
    .optOutTracking(true)
    .build()

Hackle.initialize(sdkKey: YOUR_APP_SDK_KEY, config: config) {
    // SDK ready to use.
}
HackleConfigBuilder *builder = [[HackleConfigBuilder alloc] init];
[builder optOutTracking:YES];
HackleConfig *config = [builder build];

[Hackle initializeWithSdkKey:@"YOUR_APP_SDK_KEY" config:config completion:^{
    // SDK ready to use.
}];

런타임 옵트아웃 제어

hackleApp.setOptOutTracking(optOut: true)   // activate
hackleApp.setOptOutTracking(optOut: false)  // deactivate
let isOptOut = hackleApp.isOptOutTracking   // query (property, not method)
[hackleApp setOptOutTrackingWithOptOut:YES];
[hackleApp setOptOutTrackingWithOptOut:NO];
BOOL isOptOut = hackleApp.isOptOutTracking;

영속성 관리

⚠️

런타임에 변경된 옵트아웃 상태는 앱 재시작 시 초기화 Config에 설정된 값으로 리셋됩니다.

앱 재시작 후에도 상태를 유지하려면 직접 저장 및 복원 로직을 구현해야 합니다.

func saveOptOutState(_ optOut: Bool) {
    UserDefaults.standard.set(optOut, forKey: "hackle_opt_out")
    hackleApp.setOptOutTracking(optOut: optOut)
}

func getOptOutConfig() -> HackleConfig {
    let optOut = UserDefaults.standard.bool(forKey: "hackle_opt_out")
    return HackleConfigBuilder()
        .optOutTracking(optOut)
        .build()
}
- (void)saveOptOutState:(BOOL)optOut {
    [[NSUserDefaults standardUserDefaults] setBool:optOut forKey:@"hackle_opt_out"];
    [hackleApp setOptOutTrackingWithOptOut:optOut];
}

- (HackleConfig *)getOptOutConfig {
    BOOL optOut = [[NSUserDefaults standardUserDefaults] boolForKey:@"hackle_opt_out"];
    HackleConfigBuilder *builder = [[HackleConfigBuilder alloc] init];
    [builder optOutTracking:optOut];
    return [builder build];
}