【Apple】iOS14以降でトラッキング許可を行うお話

  • このエントリーをはてなブックマークに追加

はじめに

もう1年ほど前の話になりますが、iOSアプリでAdmobなどのIDFAの使用について説明メッセージを表示し、ユーザーに許可を取る必要があります。

既存のアプリも同様で、アプリを更新したタイミングで対応を行わないと色々なところから怒られます。

なぜトラッキング許可が必要?

ざっくりいうと最近のプライバシー保護の流れを受け、広告主やデータを利用している第三者がどのような目的でどんなデータを取得しているかをユーザーに告知する必要があり、ユーザーはそのデータを許可するかどうか決めることが可能になりました。

特にAppleはIDFA(Identifier for Advertisers)という端末ごとにランダムで割り当てるデバイスIDとなり、これを広告配信に利用することで、ユーザーの属性にマッチした広告を表示することができます。

ただ利用者からすると便利ではある反面、今までの検索結果や行動結果から広告が選択されるのって少し怖いので、それを保護するためにiOS14以降はちゃんと説明と許可をとりましょうと言う事です。

Swiftで実装する

実はこの辺りはSDKでしっかりと作られているので、アプリ開発者は説明メッセージを表示する機能だけ実装すれば良い感じとなります。

今回はAdmob広告に対して実装をしていきましょう。
大前提としてアプリにAdmob広告が実装されていると言うところから進めていきます。

Google Mobile Ads SDKのバージョンを7.64.0以降にアップデートする

これは新規で作る場合は気にしなくても良いと思いますが、既存アプリの場合はアップデートする必要があります。

Cocoa Podsの場合は

 

でアップデートできますね

Info.plistに追記する

Info.plistに下記の記述を追加してください。

上記の内容ですが、ひょっとすると古い情報の可能性があるので、必ずAdmobのサイトで確認してください。

実際に画面に表示されるメッセージをここで追加します。
文言はあくまで一例です。実際に取得するデータによって変わると思いますので、文言はご確認ください。
英語で書いてるのですがざっくり言うと「あなたの端末に紐づいてる個人情報を広告主のために使うわよ」って感じです

実際に許可を表示する

先ほど設定したメッセージを実際に表示します。
大体はAppDelegateに記載しろと書かれており、確実に処理が通るので正しいのですが、アプリでスプラッシュ画面を設定している場合は画面の上に表示されるのはカッコよくないので、スプラッシュ画面の次の画面(広告がない画面)に実装するのがスマートじゃないかと思います。

今回はその辺り考えないので、ViewController.swiftに追加してみます。

 

viewDidLoad()のタイミングでトラッキングの処理を入れてます。
iOS14未満はトラッキング許可は不要なのでOSのバージョンを判別し、14以上であれば[TTrackingManager.requestTrackingAuthorization]を呼んでいます。
1秒間の遅延を入れてますが、これはiOS15以降、アプリが一時的に非アクティブになり、その場合広告のダイアログが表示されないため、1秒間の遅延を入れることでダイアログを表示されるようにしています。
これが正しい挙動かどうかは微妙なのですが、現状はこの処理でリジェクトされないためこのやり方が割とメジャーになっていると思います。

ちなみにトラッキングの許可・不許可に関わらず1度でも表示すると2度目以降は(アプリの削除を行わない限り)表示されません。

設定が完了してアプリを起動すると

こんな感じで表示されます。
これで一安心かというと、おそらくリジェクトされます。

理由は「言語が違うから利用者わかんないよね?」って事です。

じゃあInfo.Plistを直接日本語で書けばと言う話ですが、それをするくらいなら多言語化しちゃおうという話ですね。

既存アプリで「多言語化してるぞ」と言う場合はこれ以降は読み飛ばしてください。

アプリの多言語化について

iOSアプリに限らず、スマホアプリは日本国内だけではなく、海外にもリリースすることができます。
課金回りもアプリ内課金を実装すれば面倒な部分をAppleがやってくれますし(30%の手数料が取られますが)、最初は国内のみ対応してアップデートで海外対応することも可能です。

ただその場合どうしても言語やテキストの問題が発生します。

StoryBoardやプログラム内にハードコードで書いてしまうと多言語対応するとその部分の切り分けが難しくなるので、例え国内向けのアプリでも、英語+日本語と言う形で構築していきましょう。

多言語化の設定について

多言語化すること自体は割と簡単です。

「PROJECT」ー「Info」ー 「Localization」で「+」を押して追加する言語を選択すれば、言語ファイルが作られますので、言語に合ったテキストを設定しましょう。

注意点としては、デフォルトの言語「Base」は英語にした方が良いです。

言語に関してはOSの言語を見て、用意されている言語があればその言語のテキストを表示し、なければデフォルトの言語を表示するので、英語にしておくと大怪我しないです。

InfoPlist.strings を作成する

「File」ー「New」ー「File」で新規ファイル作成のページへ移動し「Strings File」を選択して「Next」をクリックします。

ファイル名は必ず「InfoPlist.strings」としてください。(大文字小文字も間違えないように)

するとファイルができるので、

と記述すれば、ダイアログの文言がこれに変わります。

次に日本語のファイルを作成します。
右側に「Localization」ボタンがあるので、押下して、言語(今回はJapanese)を選んで「Localize」を押すと、「Japanese」ファイルができます。


ない場合は先ほどの場所に両方チェックを入れると作られるはずです。


作られたファイルに今度は日本語でメッセージを入れます。

注意点としては、多言語対応を行なってからInfoPlist.stringsを作って日本語ファイルを作成してください。
順番が逆になると反映されずに右往左往します。

ちゃんと設定した場合は


こんな感じで言語に合わせたメッセージが表示されます。

ちなみに

アプリ名も言語によって変更することができます。

Info.Plistに下記の内容を追加します。

Key:「Bundle display name」

Value:「アプリ名(英語)」

その後、InfoPList.stringに

と設定すれば、言語によってアプリ名が変更されます。

またFaceIDやTouchIDなどの最初の許諾の時も同様にダイアログが表示されますが、こちらも言語対応を行うときはこのファイルを使用します。

なので「Info.plist」ー「InfoPlist.strings」と言う紐付けを行った方が良いかもしれないですね。

最後に

トラッキング対応自体は難しくないのですが、iOS14から14になった時点で調整が必要になったりするので、新しいOSがリリースしたときには動きを注視する必要がありますね。

 

執筆者:松本[ エンジニア ]

関連記事

マークアップ

コーポレートサイトのアクセシビリティ、どこまで対応すべき?

コーポレートサイトにおける。 重要だと分かっていても、コーポレートサイトにどこまで反映すべきかは悩みどころではないですか? 今回は、現実的に取り組みやすい部分と、対応が難しい部分を整理してご紹介します。 一概にこれが正解、というわけではありませんが、悩んでいる方の参考になればと思います。 目次1 コーポレートサイトでの達成基準は?2 比較的対応しやすい部分2.1 画像に代替テキストを設定する2.2 見出し構造の整理(h1~h6の適切な使用)をする2.3 色や形だけに依存しない […]

Webサイト制作

はじめてのShraePoint 実践的活用事例3選【業務効率化・DX】

目次1 SharePointとは?1.1 高い機密性が特長2 SharePointの活用法2.1 1.社内マニュアルや手順書を整備する2.2 2.営業資料や契約書の保管と共有に活用する2.3 3.情報の回覧やアンケート、意見収集の場として活用3 SharePointで作成したポータルサイト4 まとめ5 8bit公式 YouTube Channelのご紹介 SharePointとは? SharePointはMicrosoftが提供する情報共有サービスです。WordやExcel、 […]

Webデザイン

【Premiere Pro】動画素材の音声を自動で文字起こしする方法

Premiere Proの機能を使って、動画素材の音声を自動で文字起こししてみましょう。起こしたテキストは、発話タイミングに合わせて字幕として表示することもできます。とても簡単にできるので、ぜひ試してみてください。 目次1 自動文字起こし機能の使い方1.1 1.テキストパネルから文字起こしを行う1.2 2.文字スタイルの変更2 8bit公式 YouTube Channelのご紹介 自動文字起こし機能の使い方 1.テキストパネルから文字起こしを行う 音声データを含んだ動画をタイ […]

株式会社8bit (エイトビット)

東京都目黒区でWebサイト制作、Webシステム開発などを行っております。
コーポレートサイトやWebサービスの企画・提案を得意としており、自社での経験を元にアイデアをカタチにするお手伝いをさせていただいております。

Web制作に関するご相談はお気軽にどうぞ

弊社に制作をご依頼いただく際の費用感をご確認いただける、
見積りシミュレーションをご用意いたしました。