Files
sodalive-ios/docs/20261029_이벤트_상세_딥링크_연동/reviews/phase1-onelink-sdk-feasibility.md
T

3.6 KiB

이벤트 상세 OneLink SDK 검증 게이트

1. 검토 정보

  • 일자: 2026-10-29. 대상: P1-T1/P1-GATE, 제품 구현 전 feasibility 확인.
  • 기준: PRD, 계약, 계획.
  • 검토자: 독립 SDK 검증 에이전트 및 Sisyphus 근거 확인.
  • 판정: BLOCKED. 제품 기능 미완료이며 불가능하다고 단정한 결과는 아니다.

2. 목적과 범위

앱 내부에 이미 보유한 short/long HTTPS OneLink를 기존 UDL과 공존하는 SDK 경로로 해석할 수 있는지 확인한다. 일반 푸시의 공식 SDK 경로와 URI parser는 별개이며, 이 결과만으로 앱 코드 구현을 시작하지 않는다.

3. 판정 기준

공개 지원 계약 또는 안전하게 검증된 실제 SDK 동작으로 URL 입력, callback, deep_link_value/deep_link_sub5 반환을 입증해야 한다. query-only 파싱, 가짜 push attribution, SDK와 무관한 callback 모형은 증거가 아니다.

4. 확인한 근거

  • 설치 xcframework의 iOS artifact CFBundleVersion: 6.17.5. CFBundleShortVersionString=1.0은 SDK 버전이 아니다.
  • AppsFlyerLib.h:623-629: performOnAppAttributionWithURL:은 onAppOpenAttribution을 강제 호출하며 OneLink/UniversalLink/Deeplink를 해석한다. re-engagement/session/launch는 집계하지 않는다고 명시한다.
  • 같은 헤더: UDL callback didResolveDeepLink(167행), deepLinkDelegate(331행), continueUserActivity(578-584행), handlePushNotification(587-595행), addPushNotificationDeepLinkPath(747-752행).
  • 바이너리 SHA-256: 1d9e5d9b5b30e0436e602a0e5f8be8b49cadf21ef39b7a7f9ea45a4689aab5f7.
  • 헤더 SHA-256: 83dff1f888b5d75f2cdef81fcc2770a968e2c51633c652d6a91b50d9afc76eb6.

공식 근거:

5. 실행한 확인과 발견 사항

공개 계약 조사에서 URL-only legacy resolver는 확인했다. 그러나 deepLinkDelegate를 함께 설정한 현재 구성에서 수동 resolver가 어떤 callback을 보장하는지는 확인되지 않았다. 일반적인 legacy/UDL 콜백 배타성만으로 수동 API의 실제 동작을 단정하지 않는다.

두 번째 접근으로 /usr/bin/sandbox-exec -p '(version 1) (allow default) (deny network*)' /usr/bin/true를 실행해 exit 0을 확인했다. 이는 실제 iOS SDK 프로세스 및 위임된 네트워크 작업의 fail-closed 격리 증거가 아니므로 SDK 실행은 하지 않았다. SDK/앱 자격증명 로드, 시뮬레이터 생성, OneLink 해석 요청은 없다.

6. 재개 조건

AppsFlyer에 다음 지원 계약을 확인하거나, 별도 승인된 제한적 실제 SDK 검증으로 공존 동작을 확인한다:

iOS SDK 6.17.5에서 deepLinkDelegate가 설정된 상태로 performOnAppAttribution(with:)를 호출하면 어떤 callback이 보장되는가? short/long HTTPS OneLink의 deep_link_value/deep_link_sub5 반환 및 re-engagement/session/launch 미집계 계약이 유지되는가?

7. 계획 전환 및 종료

Phase 2/3은 차단 유지. 지원되지 않은 메서드, 합성 activity, SDK 교체/업그레이드를 추정 적용하지 않는다. 실제 SDK callback과 전달은 미검증이며, 후속 허용 범위가 결정되기 전 제품 코드 작업을 중단한다.