見出し画像

古いiOSデバイスのサポートを切りたい

高性能なiOSデバイスでだけインストールできるようにしたい

iOS 14は一番古いiOSデバイスだとiPhone 6s、iPhone SE(初代)からサポートしているらしい。

いま個人でつくっているアプリがCore MLによる推論や動画エンコードが根幹となるので、処理能力が貧弱なデバイスへのインストールはできないようにしたい

というわけでひさしぶりにUIRequiredDeviceCapabilitiesを漁ってみた。

https://developer.apple.com/documentation/bundleresources/information_property_list/uirequireddevicecapabilities

ちなみに長いこと4sがサポートされていた頃は、Device Capabilityで `metal` を指定すれば4sをサポート外にできるというハックがあった。

iphone-ipad-minimum-performance-a12

Possible Valuesのリストから、`iphone-ipad-minimum-performance-a12` なるものを発見。

Performance and capabilities of the A12 Bionic and later chips. Available in iOS 12.0 and later.

ということで、A12 Bionic以降のチップを搭載しているデバイスに制限できるらしい!iOS 12で追加されたようだが知らなかった。

A12 BionicといえばiPhone XS以降

うーむちょっと厳しすぎるような...せめてiPhone X以降ぐらいにしたい...

neural-engine とかの値を追加してくれませんかねAppleさん...

(Neural EngineはA11 Bionic / iPhone X以降)

nfc, arkit

UIRequiredDeviceCapabilitiesの新しめの値でいうと、`nfc`と`arkit`がある。もちろんアプリ内でNFC/ARKitを利用する機能がないと指定できないものだが、インストール可能なデバイスを制限する選択肢として効力があるのかどうか検討してみる。

まずARKitはそもそも「多くのデバイスで使えるように」というコンセプトでデプス等のハイエンドデバイスの機能を使わないようにつくられている(最近はそうでもないが)という認識なので、デバイスを制限する意図には合わないかなと。

たとえばiPhone 7 PlusのようにDepth(デプス/深度)を取れるようなデバイスの場合、それを使ってより精度良く検出するような処理を内部でやってたりするのか?ということを聞きました。

→ 回答:使ってない

普通のカメラだけで精度良く動くようなアルゴリズムになっていて、デバイスによる処理の差異はないそうです。

ここから先は

223字
文章やサンプルコードは多少荒削りかもしれませんが、ブログや書籍にはまだ書いていないことを日々大量に載せています。たったの400円で、すぐに購読解除してもその月は過去記事もさかのぼって読めるので、少しでも気になる内容がある方にはオトクかと思います。

技術的なメモやサンプルコード、思いついたアイデア、考えたこと、お金の話等々、頭をよぎった諸々を気軽に垂れ流しています。

最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/