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

 

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

関連記事

プログラミング

【PHP】PHPでExcelファイルを操作するお話 その2

目次1 前回は・・・2 考え方3 保存したフォーマットにデータを入れる4 ExcelからPDFへ変換する4.1 mpdfで変換する4.2 TCPDFで変換する4.2.1 IPAexフォントのインストール5 結局何がいいの? 前回は・・・ 前回はPHPでExcelファイルを操作する方法をまとめました。 基本的にはCSV出力や一括登録の代替案としてまとめましたが、PhpSpreadsheetを使うことでExcelで作成した書類のフォーマットにPHPでデータを入力してPDFで出力す […]

プログラミング

【PHP】PHPでExcelファイルを操作するお話 その1

目次1 こういうことってないですか?2 インストール方法3 PHPでライブラリの呼び出し方4 Excelファイルのエクスポート方法4.1 ちなみに・・・5 Excelファイルのインポート方法6 これを組み合わせると??? こういうことってないですか? webでの管理システムを設計するときに「CSVでインポートやエクスポート機能を付けてよ」って言われる事があります。 インポートに関しては一括登録や一括削除や更新など割とリスクが大きいのですが、エクスポートはあったりします。 CS […]

スマホアプリ

【Android】スプラッシュスクリーンを設定するお話

スマホアプリを作る上で欠かせない・・・訳ではないですが、アプリの構成に必要なのはスプラッシュスクリーン(以下スプラッシュ画面)ですよね 目次1 そもそもスプラッシュ画面とは?2 Androidアプリで実装する場合(今まで)3 SplashScreen API登場3.1 スプラッシュ画面用のActivityを用意する3.2 themes.xmlにテーマを記述する そもそもスプラッシュ画面とは? スマホアプリにかかわらず、ほとんどのアプリやプログラムを起動した際に一瞬表示される画 […]

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

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

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

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