i-mobile & Cocos2d-x で iOS 14 の App Tracking Transparency 対応

はじめに

iOS アプリで i-mobile を使用したところ、ガイドラインに違反しリジェクトされてしまいました。

  • Guideline 5.1.2 - Legal - Privacy - Data Use and Sharing

以前 Unity Ads は対応しましたが、i-mobile は対応していなかったため、今回対応いたしました。

i-mobile で必要な対応

基本的には i-mobile の公式ドキュメントの「iOS 14以降で必要な設定」の手順に沿って対応しますが、iOS 15 以降は少し違った対応が必要となります。

1. i-mobile iOS SDK のアップグレード

i-mobile iOS SDK をバージョン 2.1.0 以上にアップグレードします。

2. AppTrackingTransparency.frameworkを追加

Xcode で Project Navigator からプロジェクトを選択し、[TARGETS] > [Build Phases] > [Link Binary With Libraries] に「AppTrackingTransparency.framework」を追加します。

3. ATT (App Tracking Transparency) 許可申請の表示

Info.plistに追記

SKAdNetwork と ATT 許可申請で表示する説明文を Info.plist ファイルに追記します。

<key>SKAdNetworkItems</key>
<array>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>v4nxqhlyqp.skadnetwork</string>
    </dict>
</array>
<key>NSUserTrackingUsageDescription</key>
<string>【ATT許可申請ダイアログに表示されるメッセージ】</string>
許可申請の表示

アプリ起動時に ATT 許可申請を表示するため、applicationDidBecomeActive に処理を追加します。
didFinishLaunchWithOptions に追加しても良さそうですが、iOS 15 ではアプリのステータスがアクティブでないとダイアログが表示されないため、applicationDidBecomeActive に追加します。
このとき、iOS のバージョンが 14 以上であるときのみ許可申請を表示するようにします。

applicationDidBecomeActive は AppController.mm に定義されています。

#import <AppTrackingTransparency/AppTrackingTransparency.h>

- (void)applicationDidBecomeActive:(UIApplication *)application {

    if (@available(iOS 14, *)) {
        ATTrackingManagerAuthorizationStatus status = [ATTrackingManager trackingAuthorizationStatus];
        if (status == ATTrackingManagerAuthorizationStatusNotDetermined) {
            [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
                // 許諾時または拒否時に特別な処理が必要な場合は記述してください
            }];
        }
    }
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください