iOS SDK 연동 가이드

본 문서는 iOS 애플리케이션에 Mallpie SDK를 연동하기 위한 가이드입니다. SDK는 간편한 설정으로 Mallpie 서비스를 앱 내에 포함시킬 수 있는 환경을 제공합니다.

1. 연동 준비 및 요구 사항

  • 최소 지원 iOS 버전: iOS 13.0 이상

  • 언어: Swift

2. 프로젝트 설정 (설치)

제공받은 MallpieSDK.xcframework 파일을 Xcode 프로젝트에 추가해야 합니다.

  1. Xcode 프로젝트 네비게이터(Project Navigator)를 엽니다.

  2. 타겟(Target) 설정의 General 탭으로 이동합니다.

  3. Frameworks, Libraries, and Embedded Content 섹션에 MallpieSDK.xcframework를 끌어다 놓습니다.

  4. 추가된 프레임워크의 Embed 옵션을 Embed & Sign 으로 설정되어 있는지 확인합니다.

3. 권한 설정 (Info.plist)

추적 권한(App Tracking Transparency)을 획득하기 위해 애플리케이션의 Info.plist 파일에 다음 항목을 반드시 추가해야 합니다. 이 권한은 SDK 내부적으로 ADID 식별자를 수집하여 사용자 식별을 돕는 데 사용됩니다. (이 권한 팝업은 iOS 14.0 이상 기기에서 동작하며, SDK가 이를 적절히 처리합니다.)

<key>NSUserTrackingUsageDescription</key>
<string>고객님에게 맞춤형 서비스 혜택을 제공하기 위해 추적 권한이 필요합니다.</string>

3.1 외부 앱(결제 등) 딥링크 호출 설정 (Info.plist)

Mallpie 서비스 내에서 토스페이먼츠(Toss Payments) 및 기타 카드사 앱을 통해 결제를 진행하려면 해당 앱들의 스키마(Scheme)가 SDK 호스트 앱의 Info.plist 내 권한 목록에 선언되어 있어야 합니다. 애플 정책상 이를 누락하면 외부 결제 수단으로 넘어갈 수 없습니다. 자세한 내용은 토스페이먼츠 웹뷰 가이드arrow-up-right를 참고하시거나, 본 SDK의 샘플 프로젝트(MallpieIOSSample) 설정을 확인해 주시기 바랍니다.

4. SDK 초기화 (Initialization)

앱이 시작되는 시점(예: AppDelegatedidFinishLaunchingWithOptions 내부)에 MallpieSDK.shared.initialize() 메서드를 한 번 호출하여 SDK를 초기화합니다. 이 과정에서 필요한 UI 제어 설정도 한 번에 등록됩니다.

초기화 파라미터 설명

  • userKey: (필수) 암호화된 사용자 고유 식별자 키 (복호화 필요 없음.)

  • apiKey: (필수) 발급받은 Mallpie API 키

  • isDev: (선택) 개발 환경 여부 설정 (기본값: false)

  • allowsSwipeBack: (선택) 스와이프 백 제스처 (왼쪽 엣지 스와이프) 활성화 여부 (기본값: false)

  • headerViewProvider: (선택) SDK 상단에 표시할 커스텀 헤더 뷰를 제공하는 클로저

  • delegate: (선택) 뒤로가기 및 화면 닫힘 이벤트를 제어할 델리게이트 객체

  • completion_handler: (선택) 초기화 완료 혹은 실패 결과를 전달받는 클로저 (nil 이면 결과 상관없이 패스)

초기화 예시 코드 (AppDelegate 환경)

5. SDK 화면 호출 및 사용

앱의 특정 화면(버튼 클릭 이벤트 등)에서 SDK 진입을 실행할 때는 start() 메서드를 호출합니다.

참고: start()를 호출한 시점에 아직 initialize() 과정이 끝나지 않았다면, SDK는 초기화가 끝날 때까지 백그라운드 모드로 대기한 뒤 완료 즉시 자동으로 화면을 띄워줍니다.

6. 하이브리드 앱 또는 커스텀 UI 내 웹뷰 생성

기본 화면 호출 방식 외에도, 직접 네이티브 뷰(UIView) 계층에 Mallpie 전용 웹뷰를 삽입하고 싶을 때는 createWebView()를 사용합니다.

7. 고급 설정 및 이벤트 제어

7.1 SDK 델리게이트 이벤트 수신 (MallpieSDKDelegate)

MallpieSDK.shared.initialize() 선언부 영역에서 등록할 수 있는 MallpieSDKDelegate 델리게이트는 사용자가 뒤로가기 동작을 했거나 화면이 사라지는 시점을 후킹하여 동작을 제어할 수 있도록 도와줍니다.

8. 에러 핸들링 가이드 (MallpieSDKError)

SDK 초기화 및 구동 중 예외 상황이 발생하면 completion_handler 콜백을 통해 MallpieSDKError 열거형(Enum) 객체가 반환됩니다. 에러 객체는 고유의 케이스를 가지고 있어 서비스 측에서 상황에 맞는 적절한 UI 처리 및 예방 로직을 작성할 수 있습니다.

8.1 에러 확인 방법 예시

8.2 SDK 에러 명세 (MallpieSDKError Enum)

인증 및 초기화 관련 (E0xx)

에러 케이스
대응 에러 코드
설명

shopIdNotInitialized

E001

Shop ID가 초기화되지 않았습니다. API 연결 상태를 확인해주세요.

mediaKeyNotInitialized

E002

API Key(Media Key)가 누락되거나 유효하지 않습니다.

userKeyNotInitialized

E003

User Key가 누락되었습니다. SDK 초기화 시점에 올바른 사용자 키를 입력해야 합니다.

initializing

E004

SDK가 이미 초기화 중입니다. 이전 호출의 응답을 기다려주세요.

네트워크 및 시스템 연동 (E1xx ~ E3xx)

에러 케이스
대응 에러 코드
설명

networkError(message:)

E100

네트워크 연결 오류 혹은 서버 상태 이상 시 발생합니다.

internalApiError(message:)

E200

Mallpie 서버 간의 내부 통신 에러 발생 시 반환됩니다.

otherError(message:)

E300

SDK 구동 중 알 수 없는 예외 상황 발생 시 반환됩니다.

주의 (경고성 메시지)

에러 케이스
대응 에러 코드
설명

adIdNotInitialized

W001

광고 식별자(ADID) 수집 실패. (SDK 기능 자체는 정상 작동하나, 추천상품 등 개인화된 서비스 제공에 제한이 있을 수 있습니다.)