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

 

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

関連記事

プログラミング

iOSアプリでREST APIを使うお話

前回のREST APIをiOSアプリでも使うお話です。 こちらも割と簡単ですが、Kotlin=Javaに比べると型に関してはシビアです。 目次1 インストール1.1 CocoaPodsでインストールする。2 使い方2.1 GETの場合2.2 POSTの場合 インストール CocoaPodsでインストールする。 ライブラリが対応していれば簡単ですね。 その後、 これでインストール完了です。 使い方 こちらもAndroidの時と同じような感じでできますが、今回はModelでデータ […]

プログラミング

AndroidでREST APIを取り扱うお話

前回のお話でREST APIを気軽に確認する内容を書きましたが、今回は実際にスマホアプリ内でREST APIのやりとりを行う方法をまとめます。 以前はOkHttpというライブラリを使うことが多く、現在もそれが主流になりますが、今回はkotlinで使えるRetrofitと呼ばれるライブラリを使っていきましょう 目次1 インストール2 使い方2.1 GETの場合2.2 POSTの場合2.3 PUT通信の場合3 まとめ インストール 通信するので当然アプリ側にインターネット接続の設 […]

スマホアプリ

無音カメラが国内ではリリースできなかったお話

みなさん、無音カメラ(Silent Camera)で撮影してますか? いきなりグレーゾーンの発言ぽくなりましたが、App StoreもGoogle Playにも無音カメラは割とたくさんリリースされています。 そこで弊社でもその波(!?)に乗り、無音カメラのリリースを検討しました。 目次1 実際どうなった?2 リジェクト理由1 スパイウェアの扱いになった3 ちなみにGoogle Playでは?4 終わりに5 参考 実際どうなった? 結果から言うと、リリースはできませんでした。 […]

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

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

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

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