IDFAを取得する
admobのテストデバイスの登録時などにつかいます。
想定
- Xcode 13
- iOS 15
- 新規プロジェクトを想定
注意
Simulatorの場合は「00000000-0000-0000-0000-000000000000」になり、必ずTest広告になる
プログラミングで取得する
1. info.plistに追加する
- これを追加する
info.plist
<key>NSUserTrackingUsageDescription</key>
<string>トラッキングをしますか?</string>
- info.plistを右クリック > Open As > Source Codeで開ける
- 下の「ここに追加する」にペーストする
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されます。拒否すると取得できません。拒否してしまった場合は以下二つの方法があります。
- アプリを削除 > Run でもう一度確認画面が表示されます
- スマホ設定 > アプリ名 > トラッキングを許可 した後でもう一度アプリを開くと取得できます