0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Swift]IDFAを取得する方法

Posted at

IDFAを取得する

admobのテストデバイスの登録時などにつかいます。

想定

  • Xcode 13
  • iOS 15
  • 新規プロジェクトを想定

注意

Simulatorの場合は「00000000-0000-0000-0000-000000000000」になり、必ずTest広告になる

プログラミングで取得する

1. info.plistに追加する

  • これを追加する
info.plist
<key>NSUserTrackingUsageDescription</key>
<string>トラッキングをしますか?</string>
  1. info.plistを右クリック > Open As > Source Codeで開ける
  2. 下の「ここに追加する」にペーストする
info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>UIApplicationSceneManifest</key>
	<dict>
		<key>UIApplicationSupportsMultipleScenes</key>
		<false/>
		<key>UISceneConfigurations</key>
		<dict>
			<key>UIWindowSceneSessionRoleApplication</key>
			<array>
				<dict>
					<key>UISceneConfigurationName</key>
					<string>Default Configuration</string>
					<key>UISceneDelegateClassName</key>
					<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
					<key>UISceneStoryboardFile</key>
					<string>Main</string>
				</dict>
			</array>
		</dict>
	</dict>
	///
    ここに追加する
    ///
</dict>
</plist>

2. ViewControllerにいろいろ追加

import UIKit

///ここを追加
import AppTrackingTransparency
import AdSupport
///

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    ///ここを追加
    override func viewDidAppear(_ animated: Bool) {
        ATTrackingManager.requestTrackingAuthorization { status in
            switch status{
            case .notDetermined:
                //statusをアプリが判断できない
                print("判断できません")
            case .restricted:
                //statusが制限されている場合
                print("制限されています")
            case .denied:
                //承認を拒否した場合
                print("拒否されました")
            case .authorized:
                //承認した場合
                print("取得できました)
                print(ASIdentifierManager.shared().advertisingIdentifier)
            @unknown default:
                print("error")
            }
        }
    }
    ///


}

3. 実行して確認する

ポップアップの確認画面で許可するとIDFAがprintされます。拒否すると取得できません。拒否してしまった場合は以下二つの方法があります。

  1. アプリを削除 > Run でもう一度確認画面が表示されます
  2. スマホ設定 > アプリ名 > トラッキングを許可 した後でもう一度アプリを開くと取得できます

ソースコード

GitHub

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?