カテゴリー: iOS

[iOS] IDFA 絡みのあれこれ 2

前回に引き続き、iOS 14 での IDFA 関連のあれこれについて。
前回調査しきれていなかったところを少し追加調査したので、確認結果を記載しておきます。
確認用のアプリは前回のものを使用しています。

設定からトラッキングが OFF にされていた場合

確認端末

  • iPhone 7 / iOS 14 Beta 3

確認手順

  1. 「設定 / プライバシー / トラッキング」から「Appからのトラッキング要求を許可」を OFF にする。
  2. 確認用アプリを起動する。

確認結果

ユーザ許諾 isAdvertisingEnabled advertisingIdentifier.UUIDString
初回起動時でも、ユーザ許諾ダイアログは表示されない。 NO 00000000-0000-0000-0000-000000000000

ユーザ許諾後、ATTrackingManager#requestTrackingAuthorizationWithCompletionHandler: を使わずに IDFA を取得した場合

確認端末

  • iPhone 7 / iOS 14 Beta 3

確認手順

  1. 確認用アプリをインストールする。
  2. 確認用アプリを起動する。
  3. ユーザ許諾: OK を選択する。
  4. 確認用アプリを終了する。
  5. 確認用アプリを起動する。

確認結果

ユーザ許諾 isAdvertisingEnabled advertisingIdentifier.UUIDString
OK を選択した後、ATTrackingManager#requestTrackingAuthorizationWithCompletionHandler: を使わずに IDFA を取得 NO 実際の IDFA 文字列

確認できたこと

  • 設定からトラッキングを OFF にしていると、アプリ初回起動時であっても、ユーザ許諾ダイアログは表示されない。
  • ユーザ許諾ダイアログ: OK を選択後は、ATTrackingManager#requestTrackingAuthorizationWithCompletionHandler: を使わずに IDFA を取得することができる。

微妙な追加調査ですが、こんな感じでぼちぼちと調査を勧めていく予定です。

[iOS] IDFA 絡みのあれこれ

iOS 14 での IDFA 取得絡みでいろいろあって大変なところは大変だとか。どんな不条理があろうとも林檎様は神。いいね?
iOS 14 での IDFA 取得についてインターネッツを検索すると Qiita の以下の記事が引っかかります。

Qiita の神記事

iOS14でのIDFA取得 - Qiita
https://qiita.com/yofuru/items/213b88b85553631204e4

よくまとまっていてわかりやすい記事で、サンプルコードまで記載してあります。ほぼほぼこの記事で事足りてしまうので、「もう全部あいつ一人でいいんじゃないかな」という感じですね。

ただ、上記の記事のうち、「iOS Deployment Target = 14.0の場合」のところに「iOS 13.4.1」端末での動作が記載してあるところだけがよくわかりませんでした。Deployment Target より小さい端末で動作させることってできるんでしたっけ?とりあえず質問をコメントしてみました。返事が返ってくるのかはわかりませんが。。回答がありました。勘違いだったようで、訂正いただきました。

サンプルコードを試す

どうせならサンプルコードを手元で試してみようということで、Xcode 12 Beta 3 をダウンロードし、使い古しの iPhone 7 に iOS 14 Beta 3 を叩き込んでみました。追実験は基本(なんの?)。

Xcode 12 Beta 3 で新規プロジェクトを作成して、ViewController.m にサンプルコードを記載するだけで基本的には動かせるのですが、今回は iOS 13 端末でも動かしたかったので、以下の修正を加えてみました。

プロジェクト設定
  • Deployment Target は 9.0(Xcode 12 Beta 3 で設定可能な一番古いバージョン)に設定。
サンプルコード
  • @available を指定すれば iOS 13 端末で実行しても死なないはず。
    if (@available(iOS 14.0, *)) {
        [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
            ...
        }];
    }

確認結果

iPhone 7 / iOS 14 Beta 3

ユーザ許諾 isAdvertisingEnabled advertisingIdentifier.UUIDString
OK NO 実際の IDFA 文字列
許可しない NO 00000000-0000-0000-0000-000000000000

iPhone 11 Pro / iOS 13.5.1

ユーザ許諾 isAdvertisingEnabled advertisingIdentifier.UUIDString
N/A YES 実際の IDFA 文字列

ユーザ許諾選択後、設定から許諾状態を変更した時の確認結果

ユーザ許諾: OK 選択後、設定から許諾状態を OFF に変更

1. アプリ上のユーザ許諾で「OK」を選択する
2. 設定 / プライバシー / トラッキングから「Appからのトラッキング要求を許可」を OFF にする。
3. 「以前にトラッキングを許可していたAppに、トラッキングを停止するように依頼しますか?」
(Appがトラッキングを続けることを許可する / Appにトラッキングの停止を求める)から
「Appにトラッキングの停止を求める」を選択する。
4. IDFA を取得する。
isAdvertisingEnabled advertisingIdentifier.UUIDString
NO 00000000-0000-0000-0000-000000000000

ユーザ許諾: OFF 選択後、設定から許諾状態を ON に変更

1. アプリ上のユーザ許諾で「許可しない」を選択する。
2. 設定 / プライバシー / トラッキング からアプリの許諾状態を ON に変更する。
3. IDFA を取得する。
isAdvertisingEnabled advertisingIdentifier.UUIDString
NO 実際の IDFA 文字列

確認できたこと

iOS 14 端末

  • ユーザ許諾を ON にすると、実際の IDFA 文字列を取得できる。
  • その場合でも、isAdvertisingEnabled は NO になる。
  • 設定からユーザ許諾状態を変更すると、次の IDFA 取得時に許諾状態が反映される。

iOS 13 端末

  • Xcode 12 Beta 3 ビルドであっても、従来通り、isAdvertisingEnabled は YES になり、実際の IDFA 文字列を取得できる。

確認できていないこと

  • Xcode 11 ビルドのアプリを iOS 14 端末で動かしたとき、isAdvertisingEnabled と advertisingIdentifier.UUIDString はどうなる?

なるほどです。
表の文字がすべてキャピタライズされとるやんけ。。オワオワリです。

iOSのSafariが落ちてしまうアイマスPがやるべき事

半角カタカナを含むサイト名
半角カタカナを含むサイト名

ずっと iOS で Safari を開くと落ちてしまうという現象に悩まされてきたのですが、以下を見てようやく解決したので情報を共有します。

iphone で Safari が落ちる事象が解決した - ta-dadadadaのブログ

Safari のブックマークを確認してみたところ、以下の 3 つのサイト名がもろに半角カタカナでした。

  • アイドルマスターシンデレラガールズ
  • アイドルマスターミリオンライブ!
  • アイドルマスター SideM

いや、ブックマークを消そうにも Safari が開けんがな。。という話ですが、iOS 上で他のアプリから「Safari で開く」を選択すると Safari を開けます。この記事によると PC から Safari のブックマークを編集するのでも良いらしい。

上記 3 つのブックマークを中心に、半角カタカナを含むブックマークを削除してみたところ、見事に Safari が落ちなくなりました。これ、アイマス P だとハマっている人が案外いるのではなかろうか。

え、自分だけ?