【Swift】自分の端末のIDFAを調べる方法

この記事で解決するお悩み

  • そもそも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を基にユーザーの端末特定・行動追跡をし、広告のパーソナライズや広告効果の分析等に利用できるようになります。

「許可」を押すと、サービスがIDFAを利用し、ユーザの行動をトラッキングできるようになる
ゆとりくん

「行動の追跡」ができてしまうような重要な個人情報だからこそ、Appleはユーザーにトラッキングの許可を求めるんだね!

Google AdMobとIDFA

ビギナー開発者がはじめてIDFAと対峙するのは、GoogleAdMobの「無効なトラフィック」対策として、自分のiPhoneをテスト端末に登録するタイミングが多いのではないかと思います。

この登録作業を行う際、AdMob側がテスト端末を特定するためにIDFAを要求します。開発者は、テスト端末のIDFAを自身で調べ、記入しなければなりません。

Google AdMobのテスト端末登録画面。自身でIDFAを調査・登録する必要がある

しかし、肝心の「IDFAを調べる方法について」のGoogle公式のドキュメントには以下のような説明しかありません。

https://support.google.com/admob/answer/9691433より引用
ゆとりくん

……結局、どうすりゃIDFAが分かるんだぁ〜っ😂

あまり初心者に親切な説明とは言いがたいですよね😂

そこで次章では、IDFAを自分で調査する手順を初心者にもわかりやすいように解説します!
市販のアプリを使って調査する方法もありますが、たった数行のコードなので勉強がてら自分で書いてみましょう。

IDFAを調べる具体的手順

では実際に、IDFAを調べるコードを書いていきます。

STEP
新規プロジェクトを立ち上げる

Xcodeを開き、新規プロジェクトを立ち上げます。

・プロジェクトのテンプレート: 「iOS」の「App」を選択
・Product Name: 「IDFAChecker」と入力
・Interface: 「SwiftUI」を選択
・Language: 「Swift」を選択

STEP
ContentViewをコーディングする

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メソッドが実行されるだけのシンプルなプログラムです。

STEP
Info.plistを編集する

STEP2で実装したrequestTrackingAuthorizationメソッドでアクセス許可のプロンプトを表示するためには、Info.plistの設定を変更する必要があります。

画面左のProject Navigatiorでプロジェクト名をクリックし、[TARGETS] – [Signing & Capabilities] – [Info] – [Custom iOS Target Properies]を開きます。

+ボタンを押して[Key]を追加し、一覧から[Privacy – Tracking Usage Description]を選択します。その後、プロンプトに表示する文字列を[Value]に追加します。

Info.plistにKeyを追加
STEP
コードを実行し、IDFAを取得する

IDFAは端末ごとに割り当てられているため、調べたい端末上でプロジェクトを実行します。

画面中央のボタンを押すと、トラッキング許可を求めるプロンプトが表示されるので[許可]を選択してください。XCodeのデバッグエリアにIDFAが表示されます✨

プロンプトで許可を選択しないと、IDFAが表示されないのでご注意ください!

GOAL
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)

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次