iOS
iOS 앱에 애드체인 SDK를 연동하는 방법을 소개합니다.
시작하기 전에
SDK를 설치하기 전에 다음을 준비해주세요:
Xcode: 14.0 이상
iOS: 14.0 이상
Swift: 5.5 이상
appKey & appSecret: 애드체인 ADMIN에서 발급받은 인증 정보 (없다면 [email protected]로 문의)
1. SDK 설치
SDK를 설치하는 방법은 두 가지가 있습니다. CocoaPods가 익숙하시면 그걸 쓰시고, 아니면 Swift Package Manager를 쓰시면 됩니다.
방법 1: CocoaPods (추천)
프로젝트에 Podfile이 없다면 먼저 만듭니다:
cd 프로젝트경로
pod initPodfile을 열어서 다음 내용을 추가합니다:
platform :ios, '14.0'
target 'YourAppTarget' do
use_frameworks!
# 애드체인 SDK
pod 'AdChainSDK', '~> 1.0.47'
end저장하고 설치 실행:
pod install설치가 끝나면 .xcworkspace 파일로 프로젝트를 열어야 합니다 (.xcodeproj가 아니라).
방법 2: Swift Package Manager (SPM)
Xcode에서:
File > Add Packages... 선택
검색창에 입력:
https://github.com/1selfworld-labs/adchain-sdk-iosDependency Rule을 "Up to Next Major Version"으로 설정하고 1.0.47 입력
Add Package 클릭
2. Info.plist 설정
Info.plist 파일에 몇 가지 설정을 추가해야 합니다.
App Transport Security
HTTP 통신 허용 (일부 광고에서 필요함):
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>ATT (App Tracking Transparency)
광고 추적 권한 요청 문구:
<key>NSUserTrackingUsageDescription</key>
<string>맞춤형 광고를 제공하기 위해 사용됩니다</string>문구는 앱 컨셉에 맞게 바꾸셔도 됩니다.
3. SDK 초기화
AppDelegate에서 초기화
SDK는 앱 시작 시 한 번만 초기화합니다. AppDelegate.swift 파일을 열어서:
import UIKit
import AdChainSDK
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// SDK 설정
let config = AdchainSdkConfig(
appKey: "YOUR_APP_KEY",
appSecret: "YOUR_APP_SECRET"
)
// SDK 초기화
AdchainSdk.shared.initialize(
application: application,
sdkConfig: config,
listener: InitListener()
)
return true
}
}
// 초기화 리스너
class InitListener: AdchainSdkInitDelegate {
func onSuccess() {
print("SDK 초기화 성공")
}
func onFailure(error: AdchainError) {
print("SDK 초기화 실패: \(error.message)")
}
}SwiftUI를 쓴다면 App 구조체에서도 비슷하게 할 수 있습니다.
import SwiftUI
import AdChainSDK
@main
struct MyApp: App {
init() {
let config = AdchainSdkConfig(
appKey: "YOUR_APP_KEY",
appSecret: "YOUR_APP_SECRET"
)
AdchainSdk.shared.initialize(
application: UIApplication.shared,
sdkConfig: config,
listener: InitListener()
)
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}초기화 확인
아래와 같이 초기화가 됐는지 확인이 가능합니다:
if AdchainSdk.shared.isInitialized {
// 초기화 완료
} else {
// 아직 초기화 안 됨
}4. ATT 권한 요청
iOS 14.5 이상에서는 광고 추적 권한을 사용자에게 요청해야 합니다. 일반적으로 앱 시작 후 적절한 시점에 요청합니다
import AppTrackingTransparency
func requestTrackingPermission() {
// iOS 14.5 이상에서만
if #available(iOS 14.5, *) {
ATTrackingManager.requestTrackingAuthorization { status in
switch status {
case .authorized:
print("추적 허용됨")
case .denied:
print("추적 거부됨")
case .notDetermined:
print("아직 결정 안 함")
case .restricted:
print("추적 제한됨")
@unknown default:
break
}
}
}
}앱 시작하자마자 띄우면 거부당할 확률이 높으니, 사용자가 어느 정도 앱을 써본 후에 띄우는 게 좋습니다.
5. 사용자 로그인
SDK를 쓰려면 사용자 로그인이 필요합니다:
import AdChainSDK
// 사용자 정보 생성
let user = AdchainSdkUser(
userId: "user123", // 앱의 사용자 ID (필수)
gender: .male, // 성별 (선택)
birthYear: 1990 // 출생연도 (선택)
)
// 로그인
AdchainSdk.shared.login(
adchainSdkUser: user,
listener: LoginListener()
)
// 로그인 리스너
class LoginListener: AdchainSdkLoginDelegate {
func onSuccess() {
print("로그인 성공")
// 이제 오퍼월이나 다른 기능 사용 가능
}
func onFailure(error: AdchainError) {
print("로그인 실패: \(error.message)")
}
}userId는 앱에서 사용하는 사용자 식별자를 사용합니다. 성별이나 출생연도는 선택사항이지만, 제공하면 광고 타겟팅 정확도가 향상됩니다.
6. 오퍼월 띄우기
이제 오퍼월을 띄워봅시다:
import AdChainSDK
// 버튼 액션에서
@IBAction func showOfferwallTapped(_ sender: Any) {
AdchainSdk.shared.openOfferwall(
viewController: self,
placementId: "main_offerwall", // 배치 위치 구분용 (선택)
listener: OfferwallListener()
)
}
// 오퍼월 리스너
class OfferwallListener: AdchainOfferwallDelegate {
func onOpen() {
print("오퍼월 열림")
}
func onClose() {
print("오퍼월 닫힘")
}
func onError(error: AdchainError) {
print("오퍼월 에러: \(error.message)")
}
}SwiftUI에서는:
struct ContentView: View {
@State private var showOfferwall = false
var body: some View {
Button("오퍼월 열기") {
AdchainSdk.shared.openOfferwall(
viewController: UIApplication.shared.windows.first?.rootViewController,
placementId: "main_offerwall",
listener: nil // 리스너는 선택사항
)
}
}
}샘플 프로젝트
전체 예제 코드를 보고 싶으시면 GitHub 샘플 프로젝트를 참고하세요:
iOS 샘플: https://github.com/1selfworld-labs/adchain-sdk-ios-sample
샘플 프로젝트에는 UIKit과 SwiftUI 예제가 모두 포함되어 있습니다.
다음 단계
기본 설정이 끝났습니다. 이제 다른 기능들을 써볼 수 있습니다:
문제가 생겼다면
초기화나 로그인이 안 된다면 문제 해결 페이지를 확인해보세요.
참고사항
시뮬레이터에서 테스트
시뮬레이터에서도 SDK가 작동하지만, 광고 ID를 가져올 수 없어서 일부 광고가 안 나올 수 있습니다. 제대로 테스트하려면 실제 기기를 쓰는 게 좋습니다.
Last updated