月: 2020年7月

[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 はどうなる?

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

[Mac] iMac 27-inch を外部ディスプレイ化する

macOS Catalina へのアップデートができないことが判明した iMac (27-inch, Mid 2010) ですが、27 インチの広大なディスプレイは非常に使いやすいことは事実。

この iMac 自体は外部ディスプレイ化も可能なモデルなので、新しい Mac を導入しつつ、この iMac は外部ディスプレイとして使っていくのが良さそう。

インターネッツを見てみると、iMac 27-inch を外部ディスプレイ化している猛者がたくさん。

インターネッツの情報からすると、以下の構成で iMac 27-inch を外部ディスプレイ化できるとのこと。

MacBook Pro
-> UBS type C - Mini Displayport コネクタ
-> Mini DisplayPort ケーブル
-> iMac (27-inch, Mid 2010)

 

成功事例として掲載されている製品はそこまで高価ではなかったので、ひとまず以下を購入して試してみることに。

  • BENFEI USB 3.1 type Cコネクター Mini Displayport Mini D PUSB type-C端子両面挿 超高速データ転送   Apple Macbook Google new Chromebook Pixel Surface Pro 4 及び他のUSB 3.1 type C デバイスに対応 (ゴールド)
    https://www.amazon.co.jp/dp/B017OV622M
  • Cable Matters Mini DisplayPortケーブル Mini DPケーブル ミニディスプレイポート 4K解像度対応 2m HDR DP1.2 金メッキコネクタ搭載 ブラック
    https://www.amazon.co.jp/gp/product/B00HNF0L2C

昨今の状況で仕事用の MacBook Pro が自宅にあるので、以下の構成で MacBook Pro から iMac 27-inch の外部ディスプレイ化を試してみました。

MacBook Pro (15-inch, 2018)
-> BENFEI USB 3.1 type Cコネクター Mini Displayport
-> Cable Matters Mini DisplayPortケーブル
-> iMac (27-inch, Mid 2010)

 

インターネッツの情報によれば、MacBook Pro と iMac 27-inch を両方起動した状態で、iMac 27-inch 側のキーボードで Cmd + F2 を押すことで、ターゲットディスプレイモードにできるとのこと。

 

Cmd + F2

 

ん?
 

若干、映像が乱れてヒヤっとしたものの、ケーブルをつなぎ直したら安定。
音声については、iMac 27-inch 側で音声を流していると、ターゲットディスプレイモードにしても継続して流れ続ける模様。これはこれで BGM プレイヤー的な利用用途があるかもしれんし無いかもしれん。

とにかく、iMac 27-inch を外部ディスプレイとして利用できることの確認はできた。

 

新しい Mac 買うかー!

[Mac] メインPCが古過ぎる

現状のメイン PC は iMac (27-inch, Mid 2010) です。
かつては Mac OS への習熟や iOS 開発を目的として購入したような気がするのですが、今となってはインターネッツや AndApp (グラブル / モバマス) ぐらいにしか使用していませんでした。

先日ふと思い立って Xcode を最新バージョンにアップデートしようとしたのですが、一向にアップデートが完了する気配が無い。それではと Apple Developer から Xcode 11.6 をダウンロードしてみるもうまくいかない。

 

ふーむ。。🤔

 

ん?

 

 

macOS High Sierra とか 2 世代前の OS やんけ。
とりあえず最新版の OS にアップデートするしかないか。。

 

ん?

 

 

スゥー……

 

さすがに限界か。