Published by @SoNiceInfo at 8/19/2020
とりあえず実装したい人はiOS 14対応の進め方まで読み飛ばしてください
AdMobに代表される広告配信業者はIDFAという端末を一意に特定するための識別子を使っています。
ユーザに興味のある広告を配信するための仕組みです。しかし、iOS 14からIDFAを利用するためにはアプリ内でユーザにその許可を貰う必要があります。
Googleは8/11にiOS 14に対応したGoogle Mobile Ads SDKを配信しました。
また、このアップデートではIDFAの代わりにAppleが要する広告ネットワークのSKAdNetworkにも対応しています。
今回はiOS 13以前で作成したアプリをiOS 14でも引き続き広告配信できるようにアップデートする方法を紹介します。
iOS 14で広告を配信できるようにするためにGoogle Mobile Ads SDKを7.64.0以上にアップデートします。
Terminalを開いてアプリのディレクトリでPodをアップデートします。
$ cd YOUR_APP_PROJECT
$ pod update Google-Mobile-Ads-SDK
ここではユーザにアプリ内の広告にIDFAを利用する許可をもらうダイアログを表示します。
Xcodeでinfo.plistを開いてKeyに「Privacy - Tracking Usage Description」を入力します。
Valueにはユーザに伝えたい文言を入力します。
該当の部分はテキストアプリで開くとこのようになっています。
<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>
日本語に対応させる場合には通常のInfo.plist
日本語対応と同じようにInfoPlist.strings
に以下を追加します。
(この文言がAppleの審査基準を満たしているかは保証できませんのであしからず。)
NSUserTrackingUsageDescription = "お客様の興味関心に合わせた広告を表示するために利用します";
ここではGoogleがSKAdNetworkを利用できるようにします。
ユーザにIDFAの取得を拒否された場合でもAppleが提供するSKAdNetworkを利用して広告を配信するために利用するものです。
ここで設定する値は今後変更される可能性があるのでGoogleの公式サイトをチェックしましょう。
該当の部分はテキストアプリで開くとこのようになっています。
<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cstr6suwn9.skadnetwork</string>
</dict>
</array>
ここから実際にユーザにIDFAを利用する許可をもらうダイアログを表示させます。
ダイアログを表示させるにはATTrackingManager.requestTrackingAuthorization
を利用します。status
には.authorized
, denied
等が入ってきますがATTrackingManager.AuthorizationStatusで詳細を確認してください。
ユーザによりIDFA利用許可されればIDFAを利用した広告が、拒否されるとSKAdNetworkを利用した広告が配信されます。
import AppTrackingTransparency
import AdSupport
import GoogleMobileAds
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
if #available(iOS 14, *) {
ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
GADMobileAds.sharedInstance().start(completionHandler: nil)
})
} else {
// Fallback on earlier versions
GADMobileAds.sharedInstance().start(completionHandler: nil)
}
return true
})
})
ユーザにとってはこのダイアログを見ただけで不信感を抱き許可されないケースが考えられます。結果としてユーザと全く関連のない広告が表示されることによりアプリの収益が下がる恐れがあります。
そこで、企業やアプリ開発者によってはATTダイアログを表示する直前に、独自の補足説明ダイアログを表示しています。
Yahoo!リアルタイム検索やTwitterで「IDFA」や「ATT」と検索するとその例が見れるので参考にしましょう。
「IDFA」のTwitter検索結果 - Yahoo!リアルタイム検索
ただし、「許可」することを強要したり誘導するような独自ダイアログはAppleの審査ではじかれる恐れがあるので注意して実装しましょう。
Per the App Store Review Guidelines: 5.1.1 (iv), apps must respect the user’s permission settings and not attempt to manipulate, trick, or force people to consent to unnecessary data access.