Skip to content

Latest commit

 

History

History
125 lines (98 loc) · 3.94 KB

File metadata and controls

125 lines (98 loc) · 3.94 KB

Bootpay iOS Swift SDK

Bootpay 결제 연동을 위한 iOS Swift SDK 입니다.

프로젝트 구조

Bootpay/
├── Classes/
│   ├── config/
│   │   └── BootpayBuildConfig.swift    # SDK 버전 관리
│   ├── constants/
│   │   └── BootpayConstant.swift       # CDN URL, 상수 정의
│   ├── models/                         # 데이터 모델
│   └── ...
Example/
├── Bootpay/                            # 예제 앱
│   ├── BasePaymentController.swift     # 결제 공통 베이스
│   ├── PgPaymentController.swift       # PG 일반결제
│   ├── TotalPaymentController.swift    # 통합결제
│   ├── SubscriptionController.swift    # 정기결제
│   ├── AuthenticationController.swift  # 본인인증
│   └── ...
CHANGELOG.md                            # 버전별 변경 기록

버전 업데이트 가이드

SDK 버전을 올릴 때 반드시 다음 파일들을 함께 수정해야 합니다:

1. BootpayBuildConfig.swift

// 경로: Bootpay/Classes/config/BootpayBuildConfig.swift
struct BootpayBuildConfig {
    static let DEBUG = false
    static let VERSION = "4.5.0"  // ← SDK 버전 수정
}

2. BootpayConstant.swift (CDN URL 버전)

// 경로: Bootpay/Classes/constants/BootpayConstant.swift
public class BootpayConstant {
    public static let CDN_URL = "https://webview.bootpay.co.kr/5.2.2";     // ← CDN 버전 수정
    public static let WIDGET_URL = "https://webview.bootpay.co.kr/5.2.2/widget.html"  // ← 위젯 URL 버전 수정
}

3. CHANGELOG.md

// 경로: CHANGELOG.md
## X.X.X (새 버전)
* 변경사항 1
* 변경사항 2
* ...

## 4.5.0 (이전 버전)
* ...

4. Podspec (배포 시)

// 경로: Bootpay.podspec
s.version = 'X.X.X'  //  배포 버전 수정

버전 업데이트 체크리스트

버전을 올릴 때 아래 항목을 확인하세요:

  • BootpayBuildConfig.swiftVERSION 수정
  • BootpayConstant.swiftCDN_URL 수정 (CDN 버전 변경 시)
  • BootpayConstant.swiftWIDGET_URL 수정 (CDN 버전 변경 시)
  • CHANGELOG.md에 새 버전 변경사항 추가
  • Bootpay.podspecversion 수정 (CocoaPods 배포 시)

커밋 컨벤션

feat: 새로운 기능 추가
fix: 버그 수정
refactor: 코드 리팩토링
docs: 문서 수정
chore: 빌드, 설정 변경

WebView 프리워밍

iOS의 WKWebView는 첫 로딩 시 GPU, Networking, WebContent 프로세스 초기화로 4-6초 지연이 발생합니다.

프리워밍 API

API 설명
Bootpay.warmUp() WebView 프로세스를 미리 초기화 (AppDelegate에서 호출 권장)
Bootpay.isWarmedUp 프리워밍 완료 여부 확인
Bootpay.releaseWarmUp() 프리워밍 리소스 해제 (메모리 부족 시)

구현 위치

Bootpay/Classes/core/Bootpay.swift
├── warmUp()           # 명시적 프리워밍 함수 (line 110)
├── isWarmedUp         # 프리워밍 완료 여부 (line 124)
├── releaseWarmUp()    # 리소스 해제 (line 88)
├── _autoWarmUp        # 자동 프리워밍 (shared/sharedProcessPool 접근 시)
└── prewarmedWebView   # 프리워밍용 WebView 인스턴스

Example 앱 적용

Example/Bootpay/AppDelegate.swift에서 Bootpay.warmUp() 호출 예시 확인 가능.

Example 앱 구조

각 결제 타입별로 Controller가 분리되어 있습니다:

Controller 용도 UI 테마
PgPaymentController PG 일반결제 상품 상세 페이지 (파란색)
TotalPaymentController 통합결제 장바구니/결제 페이지 (초록색)
SubscriptionController 정기결제 구독 페이지 (보라색)
AuthenticationController 본인인증 인증 페이지 (청록색)

모든 Controller는 BasePaymentController를 상속받아 공통 기능을 재사용합니다.