# 시작하기

Source: https://docs.buzzvil.com/docs/buzzbenefit-ios/v6/getting-started
Platform: iOS
SDK major version: v6
Language: Korean (ko)

Buzzvil iOS SDK(이하 Buzzvil SDK)에서 제공하는 기능을 사용하기 전 완료해야 하는 설정에 대해 알아보세요.

## 요구 사양

- deployment target

  - **최소 지원**: iOS 13 이상
  - **권장 버전**: iOS 14 이상

- Xcode 16.0 이상

> ✅  **중요**
>
> - 요구 사양은 Buzzvil SDK의 최신 상태를 기준으로 명시됩니다.
> - 버즈빌은 안정적인 광고 플랫폼 및 개선된 수익화 기능의 탑재와 iOS와의 호환성을 위해 최신 버전으로 업데이트하는 것을 권장합니다.
> - 크로스 플랫폼 프레임워크(React Native, Flutter 등)를 통한 SDK 사용은 가능하지만, 기술 지원은 제공되지 않습니다.



> 📢  **공지**\
> Buzzvil SDK는 2026년 1월 1일부로 iOS 13에 대한 기술 지원을 종료합니다. iOS 13에서도 SDK 빌드 및 동작은 가능하나, 버그 수정 및 기술 지원은 제공되지 않습니다. 안정적인 서비스 제공과 최신 기능 활용을 위해 iOS 14 이상의 deployment target 설정을 권장드립니다. 자세한 내용은 [iOS 13 지원 종료 안내](https://docs.buzzvil.com/docs/policy/announcement/sdk-versioning-eol-update-announce#2025%EB%85%84-12%EC%9B%94-5%EC%9D%BC-%EA%B3%B5%EC%A7%80)를 참고하세요.

- iOS 13 이하 버전에서도 기존 SDK는 계속 동작하지만, 앞으로는 기능 업데이트와 버그 픽스가 제공되지 않습니다.
- 안정적인 최신 기능 활용을 원하신다면 iOS 14 이상의 환경으로 업데이트하시기를 권장드립니다.

## 연동용 ID 발급받기

Buzzvil SDK를 연동하려면 반드시 연동하려는 앱의 고유 식별자(App ID)와 광고 지면의 고유 식별자(Unit ID)가 필요합니다. ID를 발급받으려면 버즈빌 담당자(<help@buzzvil.com>)에게 연락하세요.

![](https://docs.buzzvil.com/api/content-image/buzzbenefit-ios/v6/image/02-getting-started/00-app_unit_id.png)

| ID 유형   | 설명                                        |
| ------- | ----------------------------------------- |
| App ID  | Buzzvil SDK를 연동하는 앱별로 부여하는 고유 식별자입니다.     |
| Unit ID | Buzzvil SDK를 통해 생성하는 지면별로 부여하는 고유 식별자입니다. |

## 포인트 적립 서버 연동하기

버즈빌이 공급하는 광고는 유저에게 포인트를 지급하는 보상형 광고와 지급하지 않는 비보상형 광고로 분류됩니다.

- 비보상형 광고: 논리워드 광고라고도 합니다. 유저가 광고에 참여해도 별도의 포인트를 지급할 필요가 없으므로 포인트 처리 서버를 연동하지 않아도 됩니다.
- 보상형 광고: 리워드 광고라고도 합니다. 유저가 광고에 참여하면 포인트를 지급해야 하므로 클라이언트의 포인트 적립 요청을 처리할 수 있는 서버가 필요합니다.

보상형 광고의 포인트 적립 요청을 처리할 수 있는 자체 서버를 보유한 경우, [포스트백 연동 가이드](https://buzzvil.atlassian.net/wiki/spaces/BDG/pages/1756004654/API)를 참고해 포인트 처리 서버를 연동하세요.

![](https://docs.buzzvil.com/api/content-image/buzzbenefit-ios/v6/image/02-getting-started/01-postback.png)

## SDK 설치하기

### Swift Package Manager

Swift Package Manager를 사용하여 Buzzvil SDK를 설치하려면 아래 단계를 따르세요.

> ✏️  **참고**\
> CocoaPods 기반 프로젝트에서 이전하는 경우 pod deintegrate를 실행하여 Xcode 프로젝트에서 CocoaPods를 삭제합니다. CocoaPods에서 생성된 .xcworkspace 파일은 나중에 안전하게 삭제할 수 있습니다.

1. Xcode에서 `File > Add Package Dependencies`로 이동합니다.

2. Buzzvil SDK Swift Package GitHub 저장소를 검색합니다.

```
https://github.com/Buzzvil/buzzvil-ios-sdk
```

3. 사용할 버전을 선택합니다. Up to Next Minor Version(최대 다음 마이너 버전) 사용을 권장합니다.

4. 패키지 프로덕트에서 `BuzzvilSDK`를 선택합니다.

> ✏️  **참고**\
> 버즈배너를 사용하지 않는 경우 `BuzzvilSDK-WithoutThirdParty`를 선택할 수 있습니다. 이 경우 버즈배너 및 베네핏허브 내 전면 광고 기능이 제한됩니다.

패키지 종속 항목을 추가하는 방법에 관한 자세한 내용은 [Apple Developer 공식 문서](https://developer.apple.com/documentation/xcode/adding-package-dependencies-to-your-app)를 참고하세요.

### Cocoapods

CocoaPods을 사용하여 Buzzvil SDK를 설치하려면 `Podfile`에 BuzzvilSDK를 추가하세요.

> ✏️  **참고**\
> 아래의 코드 스니펫은 최신 버전의 라이브러리를 기준으로 작성되었습니다.

```
   pod 'BuzzvilSDK', '~> 6.8.0'
```

> ✏️ **참고**\
> 오프라인 빌드를 진행하는 경우, 버즈빌 담당자(<help@buzzvil.com>)에게 오프라인 빌드에 필요한 프레임워크를 요청하세요. 오프라인 빌드에 대한 자세한 내용은 [오프라인 빌드](https://docs.buzzvil.com/docs/buzzbenefit-ios/v5/faq#%EC%98%A4%ED%94%84%EB%9D%BC%EC%9D%B8-%EB%B9%8C%EB%93%9C) 토픽을 참고하세요.

> ❌  **오류**\
> SDK 설치 시 문제가 발생하는 경우, [문제 해결하기](https://docs.buzzvil.com/docs/buzzbenefit-ios/v6/troubleshooting) 토픽을 참고하세요.

## SDK 초기화하기

Buzzvil SDK를 설치한 후 App ID, 유저 프로필 등 필요한 정보를 추가해 SDK를 초기화하세요.

### Buzzvil SDK 초기화하기

1. 원하는 위치에서 `BuzzBenefit.shared.initialize()`를 호출해 SDK를 초기화하세요.

> 🚨 **경고**\
> `BuzzBenefit.shared.initialize()` 호출하기 이전에 다른 모든 함수들이 호출되면 정상동작 하지 않습니다. 초기화 함수를 다른 함수 이전에 꼭 호출 해 주세요.

**Swift**

```swift
import BuzzvilSDK

let config = BuzzBenefitConfig.Builder(appId: "YOUR_APP_ID")
    .build()
BuzzBenefit.shared.initialize(with: config)
```

**Objective C**

```objectivec
@import BuzzvilSDK;

BuzzBenefitConfig *config = [BuzzBenefitConfig configWith:^(BuzzBenefitConfigBuilder * _Nonnull builder) {
  builder.appId = @"YOUR_APP_ID";
}];
[[BuzzBenefit sharedInstance] initializeWith:config];
```

### 로그인 요청하기

광고 할당을 요청하려면 로그인을 요청해야 합니다. 로그인 요청을 구성하는 항목에 대해서는 아래 표를 참고하세요.

❗️❗️❗️  **중요**  ❗️❗️❗️\
**성별**과 **출생연도** 정보는 권장으로 표기되어 있으나 등록하지 않으면 타겟팅 광고 송출이 불가능합니다. 버즈빌의 광고는 타겟팅 광고가 대부분이기에 **_해당 정보를 등록해야 정상적인 광고 할당이 가능_**&#xD569;니다.

| 필수/권장 | 유저 프로필      | 설명                                                                                                                                                                                                                                                                                            |
| ----- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 필수    | `userId`    | 유저별로 고유하게 생성하는 ID로, 개인정보 식별은 불가능한 값입니다 (로그인 ID, 이메일 사용 불가). 서비스 도중 변하지 않는 고정 값이며, 광고 할당을 위한 필수 정보입니다. ASCII 형식의 255자 이하로 제한됩니다. ⚠️  **주의** 앱을 삭제 후 재설치하여 유저의 ID 값이 변경되거나 다른 사유로 인해 고정 ID를 사용하지 못하는 경우, **_어뷰징 발생 가능성으로 인해 액션형 광고 송출이 불가능_**&#xD569;니다. 유저 고유 식별자가 변동되는 경우 버즈빌 사업 담당자에게 문의하세요. |
| 권장    | `gender`    | 유저의 성별입니다. 남성: `BuzzBenefitUserGender.male`, 여성: `BuzzBenefitUserGender.female`                                                                                                                                                                                                               |
| 권장    | `birthYear` | 유저의 출생연도입니다.                                                                                                                                                                                                                                                                                  |

다음은 SDK에 유저 프로필을 등록하는 예시입니다. 등록한 유저 프로필은 삭제할 수도 있습니다.

**Swift**

```swift
// 로그인을 요청하는 코드입니다.
let buzzBenefitUser = BuzzBenefitUser.Builder(userId: "USER_ID")
  .setGender(.male)
  .setBirthYear(YYYY)
  .build()

BuzzBenefit.shared.login(
  with: buzzBenefitUser,
  onSuccess: {
    // 로그인이 성공한 경우 호출됩니다.
  },
  onFailure: { error in
    // 로그인이 실패한 경우 호출됩니다.
  }
)

// 로그인 상태를 확인하는 코드입니다.
BuzzBenefit.shared.isLoggedIn()

// 로그아웃하는 코드입니다.
BuzzBenefit.shared.logout()
```

**Objective C**

```objectivec
BuzzBenefitUser *buzzBenefitUser = [BuzzBenefitUser userWith:^(BuzzBenefitUserBuilder * _Nonnull builder) {
  builder.userId = @"USER_ID";
  builder.gender = BuzzBenefitUserGenderMale;
  builder.birthYear = YYYY;
}];

[[BuzzBenefit sharedInstance] loginWith:buzzBenefitUser onSuccess:^{
  // 로그인이 성공한 경우 호출됩니다.
} onFailure:^(NSError * _Nonnull error) {
  // 로그인이 실패한 경우 호출됩니다.
}];

// 로그인 상태를 확인하는 코드입니다.
[[BuzzBenefit sharedInstance] isLoggedIn];

// 로그아웃하는 코드입니다.
[[BuzzBenefit sharedInstance] logout];
```

## 샘플 코드

[GitHub 샘플 코드](https://github.com/Buzzvil/buzz-sdk-samples/tree/master/buzzvil-sdk-v6-ios)를 통해 실제 구현에 사용된 예제를 참고할 수 있습니다.

## 자주 하는 질문

| 질문                             | 답변                                                                                                                                                                                                                                                                                                                                                       |
| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| iOS 17에 대응하기 위해 적용된 사항이 궁금합니다. | [iOS 17을 위한 대응](https://docs.buzzvil.com/docs/buzzbenefit-ios/v6/faq#ios-17%EC%9D%84-%EC%9C%84%ED%95%9C-%EB%8C%80%EC%9D%91) 토픽을 참고하세요.                                                                                                                                                                                                                   |
| iOS 14에 대응하기 위한 기능을 설정하고 싶습니다. | Buzzvil SDK는 iOS 14 이상에서 유저에게 활동 추적 권한 허용 팝업을 표시하는 기능을 지원합니다. 자세한 내용은 [ATT(App Tracking Transparency, 앱 추적 투명성) 허용 다이얼로그](https://docs.buzzvil.com/docs/buzzbenefit-ios/v6/benefithub#attapp-tracking-transparency-%EC%95%B1-%EC%B6%94%EC%A0%81-%ED%88%AC%EB%AA%85%EC%84%B1-%ED%97%88%EC%9A%A9-%EB%8B%A4%EC%9D%B4%EC%96%BC%EB%A1%9C%EA%B7%B8) 토픽을 참고하세요. |
