1. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ
- AppTrackingTransparency.framework (์ ํ ๊ธฐ๋ณธ ํ๋ ์์ํฌ)
- AdSupport.framework (์ ํ ๊ธฐ๋ณธ ํ๋ ์์ํฌ)
2. ์๋ด ๋ฌธ๊ตฌ ์ถ๊ฐ
info.plist์์ tracking usage description ํญ๋ชฉ์ ์ถ๊ฐํด์ ์ฌ์ฉ์์ ์ฑ ํธ๋ํน์ ๋ฐ์์ค๋ฉด์ ์๋ดํ ์๋ด ๋ฌธ๊ตฌ๋ฅผ ์์ฑํด์ค.
3. ์ฝ๋์์ ์์ฑ
iOS 14.5 ๋ฏธ๋ง์์๋ ์ ์ ์ ๋์ ์์ด IDFA๋ฅผ ๋ฐ๊ธํ ์ ์์. 14.5 ์ด์๋ถํฐ๋ isAdvertisingTrackingEnabled ์์ฒด๊ฐ deprecated ๋์ด์ ATTrackingManager๋ฅผ ์ฌ์ฉํ์ฌ IDFA๋ฅผ ๋ฐ๊ธ ๋ฐ์์ผ ํจ. ์ฒ์ ์คํ๋ ๋ ๋ฐ๊ฒ ํ๋ ค๋ฉด SceneDelegate์์ ํด์ฃผ์ด์ผ ํจ. \
func sceneDidBecomeActive(_ scene: UIScene) {
// Called when the scene has moved from an inactive state to an active state.
// Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
self.requestPermission()
}
}
// MARK: - permission
func requestPermission() {
if #available(iOS 14, *) {
ATTrackingManager.requestTrackingAuthorization {
status in
switch status {
case.authorized:
// Tracking authorization dialog was shown
// and we are authorized
print("Authorized Tracking Permission")
// Now that we are authorized we can get the IDFA
case.denied:
// Tracking authorization dialog was
// shown and permission is denied
print("Denied Tracking Permission")
case.notDetermined:
// Tracking authorization dialog has not been shown
print("Not Determined Tracking Permission")
case.restricted:
print("Restricted Tracking Permission")
@unknown
default:
print("Unknown Tracking Permission")
}
}
} else {
let manager = ASIdentifierManager.shared()
guard manager.isAdvertisingTrackingEnabled
else {
return
}
print("ATT iOS 14.5 under")
print("์๋ฎฌ๋ ์ดํฐ๋ผ๋ฉด 000 ๊ฐ์ด ๋์ค๊ฒ ๋จ")
print(manager.advertisingIdentifier)
}
}
'CS > iOS, Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] XCFramework build script (0) | 2023.04.06 |
---|---|
[iOS] XCFramework private repository์ cocoapod์ผ๋ก ๋ฐฐํฌํ๊ธฐ (0) | 2023.04.06 |
[iOS] Private Repository์ CocoaPod Framework ์ฌ๋ฆฌ๊ธฐ (0) | 2023.04.06 |
[iOS] framework ๊ธฐ๋ณธ (0) | 2023.02.14 |
[iOS] xcode, bitbucket ์ฐ๋ (0) | 2023.02.14 |