147

App Store にあるアプリSnapchatは、写真を自己破壊して共有できるアプリです。X 秒間だけ写真を表示できます。家庭用電源キーの組み合わせを使用して写真が表示されている間にスクリーンショットを撮ろうとすると、スクリーンショットを撮ろうとしたことが送信者に通知されます。

ユーザーがスクリーンショットを撮っていることを検出できるのは、SDK のどの部分ですか? これが可能だとは知りませんでした。

4

7 に答える 7

25

答えを見つけました!! スクリーンショットを撮ると、画面上のすべてのタッチが中断されます。これが、スナップチャットで写真を表示するために長押しが必要な理由です。参照: http://tumblr.jeremyjohnstone.com/post/38503925370/how-to-detect-screenshots-on-ios-like-snapchat

于 2013-01-02T10:37:59.577 に答える
1

ユーザーがタップしたかどうかを検出するためにこれを行う直接的な方法はないようhome + power buttonです。このように、ダーウィン通知を使用することで以前は可能でしが、機能しなくなりました。snapchat はすでにそれを行っているので、iPhone フォト アルバムをチェックして、この 10 秒間に新しい写真が追加されたかどうかを検出し、何らかの形で現在表示されている画像と比較していると推測されます。この比較のために何らかの画像処理が行われている可能性があります。考えただけで、おそらくこれを拡張して機能させることができます。詳細については、これを確認してください。

編集:

UITouch キャンセル イベント (スクリーン キャプチャはタッチをキャンセルします) を検出し、このブログに従ってこのエラー メッセージをユーザーに表示しているようです: iOS でスクリーンショットを検出する方法 (SnapChat など)

その場合、– touchesCancelled:withEvent:メソッドを使用して UITouch キャンセルを感知してこれを検出できます。このデリゲート メソッドで画像を削除し、適切なアラートをユーザーに表示できます。

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
    [super touchesCancelled:touches withEvent:event];

    NSLog(@"Touches cancelled");

    [self.imageView removeFromSuperView]; //and show an alert to the user
}
于 2012-11-21T00:49:48.473 に答える