Getting started
Complete the setup below before using the Buzzvil iOS SDK (referred to below as the Buzzvil SDK).
Requirements
- iOS deployment target 13 or later
- Xcode 15.3 or later.
Obtain integration IDs
You need an App ID for your app and a Unit ID for each placement to integrate Buzzvil SDK. Contact your Buzzvil representative to obtain them.

| ID type | Description |
|---|---|
| App ID | A unique identifier assigned to each app that integrates the Buzzvil SDK. |
| Unit ID | A unique identifier assigned to each placement created through the Buzzvil SDK. |
Integrate a reward server
Ads supplied by Buzzvil are classified as rewarded ads, which award points to users, and non-rewarded ads, which do not.
- Non-rewarded ads: You do not need to award points when users engage with these ads, so a point-processing server is not required.
- Rewarded ads: You must award points when users engage with these ads, so you need a server that can process reward requests from the client.
If you have your own server that can process reward requests for rewarded ads, integrate it by following the postback integration guide.

Install the SDK
Swift Package Manager
Swift Package Manager is supported from Buzzvil SDK 5.9.1. Follow these steps to add the Swift package.
-
In Xcode, go to
File > Add Package Dependencies. -
Search for the Buzzvil SDK Swift Package GitHub repository.
https://github.com/Buzzvil/buzzvil-ios-sdk
- Select a version. We recommend “Up to Next Major Version.”
For details about adding package dependencies, see the official Apple Developer documentation.
Cocoapods
To install the Buzzvil SDK using CocoaPods, add BuzzvilSDK to your Podfile.
pod 'BuzzvilSDK', '= 5.36.0'
Initialize the SDK
After installing the Buzzvil SDK, initialize it with the required information, including your App ID and user profile.
Initialize the Buzzvil SDK
- Call
BuzzBenefit.initialize()at your chosen location to initialize the SDK.
🚨 Warning
CallBuzzBenefit.initalize()before any other SDK function. Other functions will not work correctly before initialization.
import BuzzvilSDK
let config = BuzzBenefitConfig.Builder(appID: "YOUR_APP_ID")
.build()
BuzzBenefit.shared.initialize(with: config)
@import BuzzvilSDK;
BuzzBenefitConfig *config = [BuzzBenefitConfig configWithBlock:^(BuzzBenefitConfigBuilder * _Nonnull builder) {
builder.appID = @"YOUR_APP_ID";
}];
[[BuzzBenefit sharedInstance] initializeWithConfig:config];
Configure dark mode
After initialization, call BuzzBenefit.shared.setUserInterfaceStyle to configure the SDK's dark mode. The available options are listed below.
| Dark mode option | Description |
|---|---|
BuzzBenefitUserInterfaceStyleLight | Uses light mode regardless of the system's dark mode setting. |
BuzzBenefitUserInterfaceStyleDark | Uses dark mode regardless of the system's dark mode setting. |
BuzzBenefitUserInterfaceStyleSystem | The SDK's default dark mode setting (기본 값). Uses the system's dark mode setting. |
The following example makes the SDK follow the system dark mode setting.
import BuzzvilSDK
@main
final class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
// ...생략...
BuzzBenefit.shared.setUserInterfaceStyle(.system)
return true
}
}
@import BuzzvilSDK;
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// ...생략...
[[BuzzBenefit sharedInstance] setUserInterfaceStyle:BuzzBenefitUserInterfaceStyleSystem];
return YES;
}
@end
Log in
You must log in before requesting an ad allocation. See the table below for the fields in a login request.
❗️❗️❗️ Important ❗️❗️❗️
Although gender and birth year are marked as recommended, targeted ads cannot be served without them. Most Buzzvil ads are targeted, so provide these fields to receive ads reliably.
| Requirement | Profile field | Description |
|---|---|---|
| Required | userId | A unique, non-identifying user ID. Do not use a login ID or email address. It must remain stable throughout service use and is required for ad allocation. Limited to 255 ASCII characters. ⚠️ Caution ❗️❗️❗️ If the ID changes after reinstalling the app or cannot remain stable for another reason, action-based ads cannot be served because of the risk of abuse. Contact your Buzzvil business representative if user identifiers can change. |
| Recommended | gender | The user's gender. Male: BuzzBenefitUserGender.male., Female: BuzzBenefitUserGender.female. |
| Recommended | birthYear | The user's birth year. |
The following example registers a user profile with the SDK. You can also remove a registered profile.
// 로그인을 요청하는 코드입니다.
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()
BuzzBenefitUser *buzzBenefitUser = [BuzzBenefitUser userWithBlock:^(BuzzBenefitUserBuilder * _Nonnull builder) {
builder.userID = @"USER_ID";
builder.gender = BuzzBenefitUserGenderMale;
builder.birthYear = YYYY;
}];
[[BuzzBenefit sharedInstance] loginWithUser:buzzBenefitUser onSuccess:^{
// 로그인이 성공한 경우 호출됩니다.
} onFailure:^(NSError * _Nonnull error) {
// 로그인이 실패한 경우 호출됩니다.
}];
// 로그인 상태를 확인하는 코드입니다.
[[BuzzBenefit sharedInstance] isLoggedIn];
// 로그아웃하는 코드입니다.
[[BuzzBenefit sharedInstance] logout];
Sample code
See the GitHub sample code for implementation examples.
Frequently asked questions
| Question | Answer |
|---|---|
| What changed to support iOS 17? | See Support for iOS 17. |
| I want to configure iOS 14 features. | Buzzvil SDK supports the tracking authorization prompt on iOS 14+ and Apple's SKAdNetwork for install ad conversion tracking. See ATT authorization dialog. |
| I want to change all Buzzvil SDK UI at once. | Configure a theme to change colors and icons across the SDK. See Global theme. |
| Why must I add a user support button for action-based ads? | If you allocate action-based ads, you must implement user support to operate the service reliably. See Add user support for action-based ads. |
| I want ads to open in a WebView. | Use a custom launcher to open landing pages in an in-app browser. See Use a custom in-app browser. |
| I want to change video ad playback options. | See Change video ad playback conditions. |
| I want to identify ad types in BenefitHub or Native. | See Check the ad type. |
| I want to integrate Buzzvil SDK offline. | Obtain the frameworks from Buzzvil, then add them and a Run Script to your project. See Offline builds. |