Adrop SDKは2種類のターゲティングをサポートしています:
- オーディエンスターゲティング: ユーザー属性(性別、年齢、興味など)に基づいて広告をターゲティング
- コンテキストターゲティング: コンテンツや画面のコンテキストに応じて広告をターゲティング
ターゲティングを活用すると、ユーザーにより関連性の高い広告を表示でき、広告主は望む対象に効果的に広告を配信できます。
オーディエンスターゲティング
ユーザー属性に基づいて広告をターゲティングできます。
1. ターゲティングの作成
まずAdropコンソールでオーディエンスターゲティングを作成してください。
ターゲティングの作成
コンソールでオーディエンスターゲティングを作成する方法を確認
2. ユーザーIDの設定
広告レンダリング前にユーザー識別子を設定する必要があります。
import AdropAds
// ログイン後にユーザーIDを設定
Adrop.setUID("user_id")
ターゲティング広告が正常に動作するには、広告枠に入る前にUIDを設定してください。
3. ユーザープロパティの設定
ユーザー属性を設定すると、より精密なターゲティングが可能になります。
import AdropAds
// デフォルトプロパティの設定
AdropMetrics.setProperty(key: AdropKey.GENDER, value: AdropValue.AdropGender.MALE)
AdropMetrics.setProperty(key: AdropKey.AGE, value: 30)
AdropMetrics.setProperty(key: AdropKey.BIRTH, value: "19931225")
// カスタムプロパティの設定(コンソールでの登録が必要)
AdropMetrics.setProperty(key: "membership", value: "premium")
AdropMetrics.setProperty(key: "interest_tech", value: true)
AdropMetrics.setProperty(key: "last_purchase_date", value: "2024-01-15")
プロパティ値は単一値(String、Int、Bool)のみサポートしています。配列やディクショナリはサポートされていません。
デフォルトプロパティ
SDKは一般的に使用される属性に対する事前定義キーを提供します。
AdropKey
| キー | 説明 | 値タイプ |
|---|
AdropKey.GENDER | 性別 | AdropValue.AdropGender |
AdropKey.AGE | 年齢 | Int |
AdropKey.BIRTH | 生年月日 | String (YYYY, YYYYMM, YYYYMMDD) |
AdropValue
性別に対する事前定義値:
| 値 | 説明 |
|---|
AdropValue.AdropGender.MALE | 男性 |
AdropValue.AdropGender.FEMALE | 女性 |
AdropValue.AdropGender.OTHER | その他 |
AdropValue.UNKNOWN | 不明 |
// 性別設定
AdropMetrics.setProperty(key: AdropKey.GENDER, value: AdropValue.AdropGender.MALE)
AdropMetrics.setProperty(key: AdropKey.GENDER, value: AdropValue.AdropGender.FEMALE)
AdropMetrics.setProperty(key: AdropKey.GENDER, value: AdropValue.AdropGender.OTHER)
// 年齢設定
AdropMetrics.setProperty(key: AdropKey.AGE, value: 25)
// 生年月日設定
AdropMetrics.setProperty(key: AdropKey.BIRTH, value: "1999") // 年のみ
AdropMetrics.setProperty(key: AdropKey.BIRTH, value: "199903") // 年月
AdropMetrics.setProperty(key: AdropKey.BIRTH, value: "19990315") // 全日付
カスタムプロパティ
コンソールで登録した追加プロパティを設定できます。すべてのカスタムプロパティのキーは文字列で、値はString、Int、Boolタイプをサポートしています。
// 文字列値
AdropMetrics.setProperty(key: "membership", value: "premium")
AdropMetrics.setProperty(key: "favorite_category", value: "electronics")
// 整数値
AdropMetrics.setProperty(key: "purchase_count", value: 5)
AdropMetrics.setProperty(key: "loyalty_points", value: 1500)
// ブール値
AdropMetrics.setProperty(key: "is_subscribed", value: true)
AdropMetrics.setProperty(key: "newsletter_opt_in", value: false)
カスタムプロパティを使用する前に、必ずコンソールで該当プロパティを登録してください。
制約事項
プロパティ設定時には以下の制約事項にご注意ください:
- 単一値のみサポート: 配列(
[String]、[Int])やディクショナリ([String: Any])はサポートされていません。
- サポートされるタイプ: String、Int、Boolのみ使用可能です。
- 事前登録が必要: カスタムプロパティはコンソールで先に登録する必要があります。
// ❌ 誤った使用方法(配列/ディクショナリ)
AdropMetrics.setProperty(key: "interests", value: ["tech", "gaming"]) // サポートされていません
AdropMetrics.setProperty(key: "profile", value: ["age": 25]) // サポートされていません
// ✅ 正しい使用方法
AdropMetrics.setProperty(key: "interest_tech", value: true)
AdropMetrics.setProperty(key: "interest_gaming", value: true)
AdropMetrics.setProperty(key: "age", value: 25)
イベントトラッキング
ユーザー行動イベントを追跡して、ユーザーアクションに基づくオーディエンスを構築できます。AdropMetrics.sendEvent()を使用してイベントを送信します。
logEvent()は非推奨です。代わりにsendEvent()を使用してください。
イベント送信
import AdropAds
// シンプルなイベント(パラメータなし)
AdropMetrics.sendEvent(name: "app_open")
// パラメータ付きのイベント
AdropMetrics.sendEvent(name: "view_item", params: [
"item_id": "SKU-123",
"item_name": "Widget",
"item_category": "Electronics",
"price": 29.99
])
マルチアイテムイベント
複数のアイテムを含むイベント(例: purchase、begin_checkout)の場合、"items"キーの下にディクショナリの配列を渡します。
import AdropAds
AdropMetrics.sendEvent(name: "purchase", params: [
"tx_id": "tx_123",
"currency": "KRW",
"items": [
["item_id": "A", "item_name": "Product A", "price": 100, "quantity": 1],
["item_id": "B", "item_name": "Product B", "price": 200, "quantity": 2]
]
])
サポートされるイベント例
| イベント名 | 説明 | 主なパラメータ |
|---|
app_open | アプリ起動 | — |
sign_up | 会員登録 | method |
view_item | アイテム閲覧 | item_id, item_name, price |
add_to_cart | カートに追加 | item_id, item_name, price, quantity |
add_to_wishlist | ウィッシュリストに追加 | item_id, item_name, price |
begin_checkout | 決済開始 | currency, items |
purchase | 購入完了 | tx_id, currency, items |
page_view | ページ閲覧 | page_id, page_category |
click | 要素クリック | element_id, element_type |
- イベント名は1〜64文字である必要があります。
- パラメータキーは1〜64文字である必要があります。
- 文字列パラメータ値は最大1024文字までです。
- 同じ名前とパラメータを持つ重複イベントは500ms以内の送信が制限されます。
コンテキストターゲティング
コンテンツや画面のコンテキストに応じて広告をターゲティングできます。
1. ターゲティングの作成
まずAdropコンソールでコンテキストターゲティングを作成してください。
コンテキストターゲティングの作成
コンソールでコンテキストターゲティングを作成する方法を確認
2. 広告枠に値を設定
コンソールで設定したContext IDを広告読み込み時に渡します。
バナー広告
import AdropAds
let banner = AdropBanner(unitId: "YOUR_UNIT_ID")
banner.contextId = "sport" // コンテキストIDの設定
banner.load()
ネイティブ広告
import AdropAds
class ViewController: UIViewController {
private var adLoader: AdropNativeAdLoader?
func loadAd() {
adLoader = AdropNativeAdLoader(unitId: "YOUR_UNIT_ID")
adLoader?.contextId = "tech" // コンテキストIDの設定
adLoader?.delegate = self
adLoader?.loadAd()
}
}
インタースティシャル広告
import AdropAds
class ViewController: UIViewController {
private var interstitial: AdropInterstitialAd?
func loadAd() {
interstitial = AdropInterstitialAd(unitId: "YOUR_UNIT_ID")
interstitial?.contextId = "news" // コンテキストIDの設定
interstitial?.delegate = self
interstitial?.load()
}
}
リワード広告
import AdropAds
class ViewController: UIViewController {
private var rewarded: AdropRewardedAd?
func loadAd() {
rewarded = AdropRewardedAd(unitId: "YOUR_UNIT_ID")
rewarded?.contextId = "game" // コンテキストIDの設定
rewarded?.delegate = self
rewarded?.load()
}
}
動的コンテキスト設定
画面やコンテンツに応じて動的にコンテキストを設定できます。
import UIKit
import AdropAds
class ArticleViewController: UIViewController {
private var banner: AdropBanner?
var articleCategory: String? // 記事カテゴリ
override func viewDidLoad() {
super.viewDidLoad()
banner = AdropBanner(unitId: "YOUR_UNIT_ID")
// 記事カテゴリに応じてコンテキストを設定
if let category = articleCategory {
banner?.contextId = category // "sport", "tech", "business" など
}
banner?.delegate = self
view.addSubview(banner!)
banner?.load()
}
}
// 使用例
let sportArticle = ArticleViewController()
sportArticle.articleCategory = "sport"
let techArticle = ArticleViewController()
techArticle.articleCategory = "tech"
SwiftUIでのコンテキスト設定
import SwiftUI
import AdropAds
struct ArticleView: View {
let category: String
var body: some View {
VStack {
Text("記事の内容")
// カテゴリに応じて動的にコンテキストを設定
AdropBannerRepresented(
unitId: "YOUR_UNIT_ID",
contextId: category
)
.frame(width: 320, height: 100)
}
}
}
// 使用例
struct ContentView: View {
var body: some View {
TabView {
ArticleView(category: "sport")
.tabItem { Label("スポーツ", systemImage: "sportscourt") }
ArticleView(category: "tech")
.tabItem { Label("テクノロジー", systemImage: "cpu") }
ArticleView(category: "business")
.tabItem { Label("ビジネス", systemImage: "chart.line.uptrend.xyaxis") }
}
}
}
全体の例
オーディエンスターゲティング 全体の例
import UIKit
import AdropAds
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// SDKの初期化
Adrop.initialize(production: false)
// ユーザーログイン後にUIDを設定
Adrop.setUID("user_12345")
// 基本ユーザープロパティの設定
AdropMetrics.setProperty(key: AdropKey.GENDER, value: AdropValue.AdropGender.MALE)
AdropMetrics.setProperty(key: AdropKey.AGE, value: 28)
AdropMetrics.setProperty(key: AdropKey.BIRTH, value: "19960315")
// カスタムプロパティの設定
AdropMetrics.setProperty(key: "membership", value: "premium")
AdropMetrics.setProperty(key: "interest_tech", value: true)
AdropMetrics.setProperty(key: "interest_sports", value: true)
AdropMetrics.setProperty(key: "purchase_count", value: 15)
// アプリ起動イベントの送信
AdropMetrics.sendEvent(name: "app_open")
return true
}
}
class ProductViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 商品閲覧イベント
AdropMetrics.sendEvent(
name: "view_item",
params: [
"item_id": "PROD_123",
"category": "electronics",
"price": 299.99
]
)
}
@IBAction func addToCartTapped(_ sender: UIButton) {
// カートに追加イベント
AdropMetrics.sendEvent(
name: "add_to_cart",
params: [
"item_id": "PROD_123",
"quantity": 1,
"price": 299.99
]
)
}
func completePurchase() {
// 購入完了イベント
AdropMetrics.sendEvent(
name: "purchase",
params: [
"transaction_id": "T67890",
"value": 299.99,
"currency": "USD"
]
)
// 購入回数の更新
let newPurchaseCount = 16
AdropMetrics.setProperty(key: "purchase_count", value: newPurchaseCount)
}
}
コンテキストターゲティング 全体の例
import UIKit
import AdropAds
// ニュースアプリの例: 記事カテゴリに応じて異なる広告を表示
class NewsArticleViewController: UIViewController {
private var banner: AdropBanner?
// 記事情報
var article: Article?
struct Article {
let id: String
let title: String
let category: String // "sport", "tech", "business", "entertainment"
}
override func viewDidLoad() {
super.viewDidLoad()
setupBanner()
loadArticle()
}
private func setupBanner() {
banner = AdropBanner(unitId: "YOUR_UNIT_ID")
// 記事カテゴリをコンテキストIDに設定
if let category = article?.category {
banner?.contextId = category
}
banner?.delegate = self
if let bannerView = banner {
view.addSubview(bannerView)
bannerView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
bannerView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
bannerView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
bannerView.widthAnchor.constraint(equalToConstant: 320),
bannerView.heightAnchor.constraint(equalToConstant: 100)
])
}
banner?.load()
}
private func loadArticle() {
// 記事閲覧イベントの送信
if let article = article {
AdropMetrics.sendEvent(
name: "view_article",
params: [
"article_id": article.id,
"category": article.category
]
)
}
}
}
extension NewsArticleViewController: AdropBannerDelegate {
func onAdReceived(_ banner: AdropBanner) {
print("カテゴリ '\(article?.category ?? "")' ターゲット広告の読み込み成功")
}
func onAdFailedToReceive(_ banner: AdropBanner, _ errorCode: AdropErrorCode) {
print("広告の読み込み失敗: \(errorCode)")
}
func onAdImpression(_ banner: AdropBanner) {
print("広告インプレッション")
}
func onAdClicked(_ banner: AdropBanner) {
print("広告クリック")
}
}
// 使用例
let sportArticle = NewsArticleViewController()
sportArticle.article = NewsArticleViewController.Article(
id: "A123",
title: "プレミアリーグ試合結果",
category: "sport"
)
let techArticle = NewsArticleViewController()
techArticle.article = NewsArticleViewController.Article(
id: "A124",
title: "新しいAI技術が発表",
category: "tech"
)
ベストプラクティス
1. UIDの設定タイミング
ユーザーがログインしたらすぐにUIDを設定してください。
// ログイン成功時
func didLoginSuccessfully(userId: String) {
Adrop.setUID(userId)
// ユーザープロパティも一緒に設定
AdropMetrics.setProperty(key: "is_logged_in", value: true)
}
// ログアウト時
func didLogout() {
Adrop.setUID("") // UIDのリセット
AdropMetrics.setProperty(key: "is_logged_in", value: false)
}
2. プロパティの一貫性維持
ユーザープロパティは、アプリ起動時または値が変更されるたびに設定してください。
class UserManager {
func updateUserProfile(profile: UserProfile) {
// プロフィール情報更新時にプロパティを同期
AdropMetrics.setProperty(key: AdropKey.AGE, value: profile.age)
AdropMetrics.setProperty(key: "membership", value: profile.membershipLevel)
AdropMetrics.setProperty(key: "interest_\(profile.mainInterest)", value: true)
}
}
3. 意味のあるイベント送信
重要なユーザーアクションのみをイベントとして送信してください。
// ✅ 良い例: 意味のあるアクション
AdropMetrics.sendEvent(name: "purchase", params: ["value": 99.99])
AdropMetrics.sendEvent(name: "level_complete", params: ["level": 10])
AdropMetrics.sendEvent(name: "tutorial_complete")
// ❌ 悪い例: 過度なイベント
AdropMetrics.sendEvent(name: "button_tapped") // 汎用的すぎる
AdropMetrics.sendEvent(name: "scroll") // 頻度が高すぎる
4. コンテキストIDの一貫性
コンテキストIDはコンソールに登録した値と正確に一致する必要があります。
// ✅ 良い例: 明確で一貫性のあるID
banner?.contextId = "sport"
banner?.contextId = "tech"
banner?.contextId = "business"
// ❌ 悪い例: 不一致または曖昧なID
banner?.contextId = "Sport" // 大文字小文字の不一致
banner?.contextId = "technology" // コンソールの値と異なる
banner?.contextId = "category_1" // 意味が不明確
次のステップ