Skip to content

Releases: whatap/WhatapIOSAgent-Release

v2.7.15

Choose a tag to compare

@TaeGyeongNoh TaeGyeongNoh released this 22 Sep 04:13

무엇이 바뀌었나

  • 샘플링 설정이 실제로 적용됩니다. setSamplingRate 로 지정한 비율대로 수집됩니다.
  • 세션 최대 지속 시간이 30분에서 4시간으로 바뀌었습니다. 15분 무작동 만료는 그대로입니다.
    앱을 다시 실행하면 새 세션이 발급됩니다.
  • 설치형 전용으로 setSingleSessionPerLaunch(_:) 를 추가했습니다. 기본값은 false 입니다.
  • 자체 화면 추적을 구현한 앱을 위해 notifyUserActivity() 를 추가했습니다.
  • 잡히지 않은 Objective-C 예외의 사유가 크래시 리포트에 남습니다.

적용

코드 변경 없이 파일만 교체하면 됩니다. 늘어난 공개 API 는 위 두 개이고 기존 코드는 그대로 동작합니다.

.package(url: "https://github.com/whatap/WhatapIOSAgent-Release.git", exact: "2.7.15")

알아두실 것

수집되는 세션 수가 달라집니다. 샘플링을 설정한 프로젝트는 설정값대로 줄고, 세션 최대 지속 시간이 늘면서 장시간 사용이 한 세션으로 합쳐지며, 앱을 다시 실행할 때마다 새 세션이 발급됩니다. 세션 수로 과금되는 프로젝트는 적용 전에 확인하세요.

전송 필드와 옵션 기본값은 바뀌지 않았습니다.

파일

  • 최소 iOS 15.0
  • SHA256 12ef7ebaa45508c32fdcb95df83d2705462d5cc4e8ca1e6f8f65e95a7565d1e8
  • 직접 다운로드

v2.7.14

Choose a tag to compare

@TaeGyeongNoh TaeGyeongNoh released this 09 Sep 01:29

v2.7.14 (2026-09-09)

Fixed

  • App Store Connect 업로드 검증 실패 수정. v2.7.12 · v2.7.13 의 WhatapAgent.framework Info.plist 에 CFBundleVersion 이 없어, 해당 버전을 임베드한 앱의 업로드가 Validation failed (409) ... The Info.plist file is missing the required key: CFBundleVersion 으로 거부됐습니다. v2.7.14 는 이 키를 포함합니다.

v2.7.12 · v2.7.13 사용 중지 안내

두 버전을 임베드한 앱은 App Store Connect 업로드가 거부됩니다. v2.7.14 이상을 사용해 주세요.
런타임 동작·수집 항목·전송 형식에는 영향이 없으며 업로드 단계에서만 발생합니다.

Compatibility

  • Drop-in — 코드 변경 불필요, xcframework 파일 교체만으로 적용.
  • 공개 API·데이터 형식·옵션 기본값·런타임 동작 변경 없음 (v2.7.10 ~ v2.7.13 과 동일). 최소 iOS 15.0.

SHA256 193c78e7d5bbd62fd052834cc6886e6b4d875785cd9cbf2c5811e88a2c6e18a8

v2.7.13

Choose a tag to compare

@TaeGyeongNoh TaeGyeongNoh released this 04 Sep 06:55

사용 중지 안내 — 이 버전의 WhatapAgent.framework Info.plist 에 CFBundleVersion 이 누락되어, 임베드한 앱의 App Store Connect 업로드가 거부됩니다 (Validation failed (409)). v2.7.14 이상을 사용해 주세요.


v2.7.13 (2026-09-04)

Fixed

  • ScreenGroup 종료 타이머 크래시 수정. 크래시 스레드가 com.whatap.screengroup 이고 스택이 __CFRunLoopTimerDeallocate 를 지나는 크래시가 더 이상 발생하지 않습니다. 앱에서 ScreenGroup API 를 직접 사용하지 않아도 해당됩니다. 화면 전환과 WebView 활동이 잦은 앱에서 발생 빈도가 높았습니다.

Changed

  • ScreenGroup 종료·전송 시점이 스크롤 중에도 지연되지 않습니다. 스크롤이 많은 화면에서 ScreenGroup 의 종료 시각과 duration 분포가 이전보다 짧고 일정하게 나올 수 있습니다. 수집 항목과 전송 형식은 그대로입니다.

Compatibility

  • Drop-in — 코드 변경 불필요, xcframework 파일 교체만으로 적용.
  • 공개 API·데이터 형식·옵션 기본값 변경 없음 (v2.7.10 ~ v2.7.12 와 동일). 최소 iOS 15.0.

SHA256 4fc4a8944d7675fbeeb85b5aba29ba6551300be9c4a061999811462c48a43709

v2.7.12

Choose a tag to compare

@TaeGyeongNoh TaeGyeongNoh released this 31 Aug 09:53

사용 중지 안내 — 이 버전의 WhatapAgent.framework Info.plist 에 CFBundleVersion 이 누락되어, 임베드한 앱의 App Store Connect 업로드가 거부됩니다 (Validation failed (409)). v2.7.14 이상을 사용해 주세요.


변경

  • 최소 지원 iOS 를 15.0 으로 낮췄습니다.
  • SPM 매니페스트의 platforms 를 iOS 15 로 맞췄습니다.

호환성

  • Drop-in — 코드 변경 없이 xcframework 교체만으로 적용됩니다.
  • 공개 API 변경 없음 (공개 심볼 1,356개 동일).
  • 런타임 동작 변경 없음.

빌드

  • Xcode 26.3 / iOS 26.2 SDK / Swift 6.2.4
  • WhatapAgent.xcframework.zip sha256: 727ed3235462ca3c590facc9dd059071baef84942696696488f60713c4e19cbc

v2.7.11 — WebView 브릿지 데이터 유실 4건 + 호스트 앱 크래시 위험 3건

Choose a tag to compare

@TaeGyeongNoh TaeGyeongNoh released this 27 Aug 01:07

Drop-in 교체 — 코드 변경 불필요. 공개 API 표면은 2.7.10 과 동일합니다 (.swiftinterface byte-identical, 심볼 1356개 동일).

Fixed — WebView 브릿지 데이터 유실 4건

  • 브릿지 데이터 전량 폐기 해소: 브라우저 에이전트 payload 의 meta.pCode / meta.projectAccessKey 가 웹 프로젝트 값 그대로 올라가 모바일 인그레스가 전량 폐기하던 이슈. 서버가 HTTP 200 + 본문 에러(<pcode> has deleted.) 로 응답해 흔적 없이 유실됐습니다. camelCase 키를 존재할 때만 override 하도록 변경 (Android replaceMetaFields 정합). 통짜 merge 가 p_platform: W_IOS 를 ios 로 오염시키던 부수 회귀도 정정.
  • Web Vitals 전량 유실 해소: 업로드 경로를 /webVitals_v2 → /v2/webVitals 로 교정 (기존 경로는 서버에 없어 404). 브릿지 method 이름 webVitals_v2 는 브라우저 에이전트와의 계약이라 유지합니다.
  • endScreenGroup 고아 업로드 라인 제거: ScreenGroup 종료 payload 가 /v2/webVitals 로 함께 올라가 Web Vitals 를 오염시키던 문제.
  • 업로드 큐 수명 창 제거: 전송 중 들어온 청크가 닫힌 배열 뒤에 이어붙어 깨진 JSON 이 전송되거나 조용히 유실되던 구조를 스왑 방식으로 변경.

Security / Stability — 호스트 앱 크래시 위험 3건

  • repackV2SessionReplay 의 JSONSerialization NSException 을 WhatapExceptionGuard 로 차단 (Swift try? / catch 로는 잡히지 않아 호스트 앱을 죽일 수 있었습니다).
  • 누적 업로드 큐 상한 16MB 도입 — 대량 발신 시 버퍼가 부풀어 호스트 앱이 OOM 으로 강제 종료되는 것을 방지.
  • WhatapLogger.adapters 데이터 레이스에 NSLock 도입 (isDebug == true 인 세션에서만 발화하던 조건).

대시보드 영향

그동안 폐기되던 WebView 브릿지 데이터(onError / pageLoad / routeChange / event / resource / webVitals / sessionReplay)가 새로 적재되기 시작합니다. WebView 지표가 0 이었던 프로젝트는 값이 올라옵니다.

산출물

zip sha256 d1c4b13b4300314bfc78723c02aa576588ba7b6fdf5cea0b5a7bb3d889beead8
다운로드 https://repo.whatap-mobile-agent.io/uploads/2.7.11/WhatapAgent.xcframework.zip
툴체인 Xcode 26.3 (17C529) / iphoneos26.2 SDK / Swift 6.2.4
지원 iOS 15.6+ (ios-arm64, ios-arm64_x86_64-simulator)

v2.4.3 - getTopViewController Crash Hotfix

Choose a tag to compare

@devload devload released this 14 Apr 01:36

🔴 Critical Hotfix — Infinite Recursion Crash

Fixes stack overflow crash reported in WKWebView + SPA environments (React, Vue, Angular 등).

Root Cause

UINavigationController.visibleViewController가 다음 상황에서 nil을 반환:

  • 빈 NavigationController (viewControllers.isEmpty)
  • Push/pop 애니메이션 transition 중간 상태
  • 빈 modal이 상위 nav에 present된 순간 (nil 전파)

기존 getTopViewController는 종료 조건 없이 재귀하여 nil을 계속 전달 → connectedScenes를 재호출 → 동일한 nav 반환 → 무한 재귀 → EXC_BAD_ACCESS (stack overflow).

Fix — 3-Layer Defense

Layer 방어 대상
1. Depth limit (20) 모든 형태의 과도한 재귀
2. Cycle detection ObjectIdentifier Set 기반 순환 감지
3. Nil-safe traversal 빈 nav 즉시 반환 (이번 버그 직격)

Verification

WebViewStressApp T10 시나리오로 재현 및 검증:

  • Before: depth=200 overflow=true (crash)
  • After: depth=1 overflow=false ✅

Modified Files

  • exporter/WhatapSpanProcessor.swift
  • instrumentation/screen/ScreenLoadTracerEnhanced.swift
  • WhatapIOSAgent.swift

Artifact

  • XCFramework: https://repo.whatap-mobile-agent.io/uploads/2.4.3/WhatapAgent.xcframework.zip
  • Checksum (SHA-256): a5118aa2014642d2837b4370fa7892d77ec58d626cca665c01a81fc6283e9f72

Upgrade

.package(url: "https://github.com/whatap/WhatapIOSAgent-Release", .upToNextMajor(from: "2.4.3"))

추가 권장: WebView 사용 시 setupWebViewBridge 설정으로 호출 빈도 감소 → 추가 안전성 확보.

WhatapAgent v2.3.0 - Crash Fix Release

Choose a tag to compare

@devload devload released this 30 Nov 22:12

🚨 Critical Crash Fix Release

✅ Fixed Issues

  • Crash in Log Export: Fixed crash in WhatapLogHttpExporter.convertLogsToJson()
  • Crash in Span Export: Fixed crash in WhatapSpanHttpExporter.convertSpansToJson()

🔧 Improvements

  • Added comprehensive error handling with try-catch blocks
  • Safe handling of empty MetricsSampler arrays
  • Individual span/log processing with compactMap for fault isolation
  • JSON serialization validation

📦 Installation

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/whatap/WhatapIOSAgent-Release.git", from: "2.3.0")
]

Direct Download

curl -L -o WhatapAgent.xcframework.zip https://repo.whatap-mobile-agent.io/uploads/2.3.0/WhatapAgent.xcframework.zip

📊 File Information

  • Version: 2.3.0
  • Build Date: 2025-12-01
  • File Size: 2.0 MB
  • MD5 Checksum: 8b26bbbc3493b973c122c68d862126fe

🔍 Download URLs

1.0.0

Choose a tag to compare

@devload devload released this 16 Jul 06:32
fix: Update XCFramework checksum to match actual CloudFront binary

- Old checksum: 8986441fdfc1615c0aa7ad704f19b8d0aa94ff5aa8d7ec7f1c30edb4ef758ac8
- New checksum: f745a1ef2e360ddcb734e8aa08af8b9567d32ab3a0b6c340d95bf24894785909
- Verified: Swift Package Manager successfully resolves with new checksum
- Tested: XCFramework download and structure validation passed

2.1.0

Choose a tag to compare

@devload devload released this 27 Aug 09:05
d9dbabe
Update Package.swift