3
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.

CocoaAdvent Calendar 2020

Day 2

[Cocoa][Swift]iOS 14 でのトラッキングのオプトインについて

Last updated at Posted at 2020-11-30

広告を使って Android と iOS のモバイルアプリを宣伝する場合、広告のクリックがアプリのインストールとアプリ内操作の獲得にどの程度貢献しているかを把握することが重要だ。

iOS の IDFA(広告ID)は、この情報を計測するために利用されている。

iOS14のトラッキングは、以下の種類がある。

  • SKAdNetwork (SKA)
    • ユーザの個人情報を利用しない。
    • アプリのインストールと特定のキャンペーンを関連付けるためのもの。
  • AppTrackingTransparency (ATT) フレームワーク
    • IDFAを扱うためのもの。

iOS14から、ASIdentifierManager の isAdvertisingTrackingEnabled は非推奨。

ASIdentifierManager *identifierManager = [ASIdentifierManager sharedManager];
if ([identifierManager isAdvertisingTrackingEnabled]) {
    NSLog(@"[idfa] isAdvertisingTrackingEnabled enabled");
} else {
    NSLog(@"[idfa] isAdvertisingTrackingEnabled disabled");
}
NSString *idfa = identifierManager.advertisingIdentifier.UUIDString;
NSLog(@"[idfa] %@", idfa);

コードの互換性は保たれていて、iOS14では isAdvertisingTrackingEnabled はfalseを返す。

iOS14では、設定のプライバシー > 広告 画面がなくなった。

広告

システムが表示するダイアログの文言は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>NSUserTrackingUsageDescription</key>
	<string>広告トラッキングしますよ。</string>
</dict>
</plist>

ユーザに許可を得るコードは以下のとおり。

 if (@available(iOS 14, *)) {
    [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:
        ^(ATTrackingManagerAuthorizationStatus status) {
        NSLog(@"in requestTrackingAuthorizationWithCompletionHandler");
        if (status == ATTrackingManagerAuthorizationStatusAuthorized) {
            NSLog(@"[requestTrackingAuthorization] authorized");
            NSString *idfa = identifierManager.advertisingIdentifier.UUIDString;
            NSLog(@"[idfa] %@", idfa);
        } else if (status == ATTrackingManagerAuthorizationStatusDenied) {
            NSLog(@"[requestTrackingAuthorization] denied");
        } else if (status == ATTrackingManagerAuthorizationStatusRestricted) {
            NSLog(@"[requestTrackingAuthorization] restricted");
        } else {
            NSLog(@"[requestTrackingAuthorization] notDetermined");
        }
   }];
} else {
    // Fallback on earlier versions
}

確認ダイアログは一度しか表示しないが、設定は後から有効にできる。その画面を表示するコードは以下のとおり。

 NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
アプリ設定 設定

【関連情報】
Cocoa Advent Calendar 2020

Cocoa.swift

Cocoa勉強会 関東

Cocoa練習帳

3
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
3
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?