iOS
そもそもスクリーンショットは端末の機能なのでデベロッパーの都合で禁止すべきではないし、完全に禁止というのはできない。スクリーンショットされたことを検知したりする機能もない。
画面の一部を隠すという機能もデベロッパーに提供されてはいない。
ただ、Appleが用意したUITextField
のisSecureTextEntry
をonにすると、そのテキストフィールドの部分だけはスクリーンショットに映らないという公式の機能がある。これをハックすると、画面の一部または全体をスクリーンショットに映らないようにすることもできる模様。
Youtube - Prevent Screenshot - SwiftUI - Xcode 15
github - yoxisem544/ScreenshotPreventing-iOS
筆者自身も、スクリーンショットに映らないようにしてあるアプリをAppStoreで見つけたこともある。そのため、このような機能を入れてもAppStoreでリジェクトされないようである。ただ、このような利用方法をApple公式が想定しているわけではなさそうなので、いつまでも利用可能とは限らない。
またこのような機能を入れたところで、端末の画面を他の端末のカメラなどで撮影してしたり、パソコンや他のモニタに映した上でそのモニタ上でスクリーンショットを撮るなどはできてしまうと思われる。完璧な対策ではないので、そもそもスクリーンショットを撮られても大丈夫な設計にすべきだろう。
参考: How to prevent/disable screenshots on iOS 17 beta ?
Android
こちらもスクリーンショットそのものを禁止することはできないが、あるActivityについてスクリーンショットに映らないようにできる機能がある。