この記事で解決するお悩み
- そもそもIDFAってなに?
- IDFAは何に使うの?
- 自端末のIDFAを調べるにはどうすればいいの?
Swift未経験から独学でアプリ開発を行なっている僕が、
実際に躓きやすいポイントを「初心者にわかりやすいように」解説するよ!
動作確認済みの環境
【XCode】16.1
【Swift】6.0.2
【iOS】18.0.1
【macOS】Sonoma 14.6.1
IDFAとは
IDFAとは「Identifier for Advertisers(広告用識別子)」の略称で、主に広告配信の最適化や効果測定を目的として各iOSデバイスに割り当てられる一意の識別子です。
以下のような32文字のUUID形式で表現されます。
【IDFAの一例(架空の値)】
AEBE52E7-03EE-455A-B3C4-E57283966…(合計32文字)
ユーザーがアプリ内でトラッキングを許可すると、サービス提供元(アプリや広告配信業者など)はIDFAを基にユーザーの端末特定・行動追跡をし、広告のパーソナライズや広告効果の分析等に利用できるようになります。
「行動の追跡」ができてしまうような重要な個人情報だからこそ、Appleはユーザーにトラッキングの許可を求めるんだね!
Google AdMobとIDFA
ビギナー開発者がはじめてIDFAと対峙するのは、GoogleAdMobの「無効なトラフィック」対策として、自分のiPhoneをテスト端末に登録するタイミングが多いのではないかと思います。
この登録作業を行う際、AdMob側がテスト端末を特定するためにIDFAを要求します。開発者は、テスト端末のIDFAを自身で調べ、記入しなければなりません。
しかし、肝心の「IDFAを調べる方法について」のGoogle公式のドキュメントには以下のような説明しかありません。
……結局、どうすりゃIDFAが分かるんだぁ〜っ😂
あまり初心者に親切な説明とは言いがたいですよね😂
そこで次章では、IDFAを自分で調査する手順を初心者にもわかりやすいように解説します!
市販のアプリを使って調査する方法もありますが、たった数行のコードなので勉強がてら自分で書いてみましょう。
IDFAを調べる具体的手順
では実際に、IDFAを調べるコードを書いていきます。
Xcodeを開き、新規プロジェクトを立ち上げます。
ContentViewを以下のように記述していきます。
//ContentView.swift
import SwiftUI
import AppTrackingTransparency //ポイント①
import AdSupport //ポイント②
struct ContentView: View {
var body: some View {
Button{
requestIDFA()
}label: {
Text("広告IDを確認する")
}
}
func requestIDFA() {
ATTrackingManager.requestTrackingAuthorization { status in //ポイント③
switch status {
case .authorized:
// トラッキングが許可された場合
let idfa = ASIdentifierManager.shared().advertisingIdentifier //ポイント④
print("IDFA: \(idfa)")
case .denied, .restricted, .notDetermined:
// トラッキングが拒否、制限、未決定の場合
print("トラッキングが許可されていません")
@unknown default:
fatalError("未知のトラッキングステータスです")
}
}
}
}
コードのポイント!
AppTrackingTransparency
モジュール
→ATTrackingManager
クラスを利用するために必要なモジュールAdSupport
モジュール
→ASIdentifierManager
クラスを利用するために必要なモジュールrequestTrackingAuthorization
メソッド
→トラッキング用のデータへのアクセス許可を求めるプロンプトを表示するATTrackingManager
クラスの非同期クラスメソッド。ユーザの選択完了時に、結果をコンプリーションハンドラで処理するadvertisingIdentifier
プロパティ
→デバイスの広告識別子(IDFA)を保持するASIdentifierManager
クラスのプロパティ。ユーザからトラッキング許可が得られた場合に有効な値を返す
画面中央にボタンが1つあり、押下時にrequestIDFA
メソッドが実行されるだけのシンプルなプログラムです。
STEP2で実装したrequestTrackingAuthorization
メソッドでアクセス許可のプロンプトを表示するためには、Info.plistの設定を変更する必要があります。
画面左のProject Navigatiorでプロジェクト名をクリックし、[TARGETS] – [Signing & Capabilities] – [Info] – [Custom iOS Target Properies]を開きます。
+ボタンを押して[Key]を追加し、一覧から[Privacy – Tracking Usage Description]を選択します。その後、プロンプトに表示する文字列を[Value]に追加します。
IDFAは端末ごとに割り当てられているため、調べたい端末上でプロジェクトを実行します。
画面中央のボタンを押すと、トラッキング許可を求めるプロンプトが表示されるので[許可]を選択してください。XCodeのデバッグエリアにIDFAが表示されます✨
プロンプトで許可を選択しないと、IDFAが表示されないのでご注意ください!
コード全文
//ContentView.swift
import SwiftUI
import AppTrackingTransparency
import AdSupport
struct ContentView: View {
var body: some View {
Button{
requestIDFA()
}label: {
Text("広告IDを確認する")
}
}
func requestIDFA() {
ATTrackingManager.requestTrackingAuthorization { status in
switch status {
case .authorized:
// トラッキングが許可された場合
let idfa = ASIdentifierManager.shared().advertisingIdentifier
print("IDFA: \(idfa)")
case .denied, .restricted, .notDetermined:
// トラッキングが拒否、制限、未決定の場合
print("トラッキングが許可されていません")
@unknown default:
fatalError("未知のトラッキングステータスです")
}
}
}
}
おわりに
今回は、IDFAを調べる方法・手順について解説しました。
より詳細な情報については、下記参考資料欄をご参照ください。
参考になれば嬉しいです。ここまでお読みくださり、ありがとうございました!
※本記事は、著者が学習した内容をまとめたものとなります。内容の精査につきましては各種生成AIツールでチェックするなど現時点の技術力で可能な限りの注意を払っていますが、万が一誤りがございましたらフォームからご一報いただけると幸いです。
参考資料
・Google. “テストデバイスを設定する”. Google AdMobヘルプ, (参照 2024-11-26)
・Apple. “App Tracking Transparency”. Apple Developer, (参照 2024-11-26)
・Apple. “ATTrackingManager”. Apple Developer, (参照 2024-11-26)
・Apple. “AdSupport”. Apple Developer, (参照 2024-11-26)
・Apple. “ASIdentifierManager”. Apple Developer, (参照 2024-11-26)
・Apple. “requestTrackingAuthorization(completionHandler:)”. Apple Developer, (参照 2024-11-26)
・Apple. “advertisingIdentifier”. Apple Developer, (参照 2024-11-26)
コメント