【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がリリースしたときには動きを注視する必要がありますね。

 

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

関連記事

マークアップ

背景に画像や動画を置いてパララックス効果で見せる

サイトを作っているとスクロールした時に背景画像などを固定させておきたい、パララックス効果を使いたいという時があると思います。 簡単なものであれば簡単なcssで実現できます。 目次1 背景画像をパララックス効果で見せる1.1 DEMO1.2 HTML1.3 CSS 背景画像をパララックス効果で見せる DEMO See the Pen Untitled by kkdd (@kk8kk) on CodePen. なんとなくよく見る感じの表示になっていると思います。 HTMLとcss […]

スマホアプリ

Android Studioでベクター画像を登録しよう

Androidアプリを作成しているとアプリ内のアイコン画像を追加したい、ということありますよね。 そんな時は画像の解像度を気にせず使用できる、ベクター画像を使用すると便利です。 Android Studioでは、ちょっとした手順を踏めばベクター画像をdrawableリソースの中にxmlファイルとして生成してしてくれます。 簡単なので、早速進めてみましょう。 目次1 Android Studioを開こう2 ベクター画像の登録画面を開こう3 クリップ・アートで登録してみよう4 ロ […]

マークアップ

属性セレクターを使ってファイルごとにアイコンをつけよう!

例えばpdfのアイコンをつけたいときに『pdfIcon』をというclassをつけて表示させる、という方法があります。 ただ動的に表現したい場合などにちょっと不便だなと思うこともあるかと思います。 そんな時は属性セレクターを使ってファイルごとにアイコンをつけることができます。 早速属性セレクターを使ってみよう 属性セレクターはを使えば指定された値が存在していたら指定されたcssを適用する、という感じの動作をしてくれます。 書き方としては「属性$=”値”」 […]

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

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

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

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