ユーザーがホーム/電源ボタンでスクリーンショットを撮っていることを知らせる通知またはその他のメカニズムはありますか?
スクリーンショットの撮影を無効にしたいというスレッドを見てきましたが、それは私がやろうとしていることではありません.
ユーザーがスクリーンショットを撮ることで自分の作品がコピーされるのではないかと心配している写真家のクライアントがいて、スクリーンショットを撮る前に画像に透かしを入れる機会があれば、彼の恐れは和らぐだろうと思いました.
ユーザーがホーム/電源ボタンでスクリーンショットを撮っていることを知らせる通知またはその他のメカニズムはありますか?
スクリーンショットの撮影を無効にしたいというスレッドを見てきましたが、それは私がやろうとしていることではありません.
ユーザーがスクリーンショットを撮ることで自分の作品がコピーされるのではないかと心配している写真家のクライアントがいて、スクリーンショットを撮る前に画像に透かしを入れる機会があれば、彼の恐れは和らぐだろうと思いました.
これがうまくいくかもしれない方法ですが、それは私が確信しているユーザーインターフェースのガイドラインに完全に反するでしょう。画像を表示するためにユーザーに画面上に指を置くように強制すると、スクリーンショットを作成できないと思います。ホーム+ロックキーを押して実際にスクリーンショットを撮るとすぐに、画面は指が触れていないかのように動作するように見えます。ホーム画面間を移動しながらスクリーンショットを撮ってみて、私が何を意味するかを確認してください。
決して完璧なソリューションではありませんが、ユーザーエクスペリエンスをあまり損なうことなく、本当に賢い場合は、アプリのデザインに組み込むことができるかもしれません(ただし、難しい課題です!)。それでも、これにより、ユーザーがスクリーンショットを撮ることを許可せずにアートワーク/写真を表示できるようになると思います。
ユーザーがスクリーンショットを撮ると、PictureWasTakenNotification
Darwin 通知が送信されます。ただし、これはスクリーンショットが撮られた後に送信されます。
(スクリーンショットが撮影される前に通知は送信されません。)
iOS 7以降、UIApplicationUserDidTakeScreenshotNotification
存在します。したがって、次のようなことを行うと、スクリーンショットが検出されます。
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(userDidTakeScreenshot) name:UIApplicationUserDidTakeScreenshotNotification object:nil];
}
- (void)userDidTakeScreenshot {
// Screenshot taken, act accordingly.
}
最後に、オブザーバーを削除することを忘れないでください。
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationUserDidTakeScreenshotNotification object:nil];
}
本当に必要なのは、実際のスクリーン キャプチャが行われる前に送信される通知です。グラブが発生する前にコンテンツを再描画するための機内スクリーンショットの機会をアプリに与えるデリゲート メソッドまたはその他の手段。
そして、1つもありません。