【问题标题】:Notification of or detecting screenshot before being taken?在拍摄之前通知或检测屏幕截图?
【发布时间】:2011-01-08 11:34:15
【问题描述】:

是否有通知或其他机制通知用户正在使用主页/电源按钮截屏?

我看到了关于想要禁用截屏功能的帖子,但这不是我想要做的。

我有一位摄影师客户,他担心他的作品会被用户截屏复制,我想如果有机会在截屏之前在图像上添加水印,那将减轻他的恐惧。

【问题讨论】:

  • 您可以随时为所有图片添加水印。水印不必是人类可感知的。
  • 是的,我知道我们可以走这条路,但我们的想法是在视觉上干扰图像。
  • 您查找此通知的目的是什么?我的意思是,你会通知谁,他们能用这些信息做什么?这是在网络上还是在移动 Safari 的封闭网络中?还是在特定应用程序中?
  • 我想知道 Flash 是否可以连续切换 2 个隔行扫描图像(总体性能可以接受)?这会在视觉上降低屏幕截图的质量。
  • 试试这个答案的作用(第二个)stackoverflow.com/questions/10122212/iphone-screenshot您可以“技术上”监控库中出现的用户图片。

标签: iphone screenshot detection notifications


【解决方案1】:

这是一种可行的方法,尽管我敢肯定它会完全违反用户界面准则。如果您强迫用户将手指放在屏幕上以显示图像,那么我认为他们无法创建屏幕截图。因为一旦你按下 home+lock 键来实际截屏,屏幕的行为就好像没有手指触摸它一样。尝试在主屏幕之间移动时截取屏幕截图以了解我的意思。

无论如何都不是一个完美的解决方案,但如果你真的很聪明,你可以将它应用到你的应用设计中,而不会过多地影响用户体验(虽然这是一个艰巨的挑战!)。不过,我相信这可以让您在不让用户截取屏幕截图的情况下显示艺术品/照片。

【讨论】:

  • 我想到了这一点,并在 iphone.appleinsider.com 上进行了尝试,当你不触摸屏幕时,其奇怪的界面会显示 UI chrome。在屏幕上按住手指(因此 Webview 正在跟踪触摸)时,我截取了屏幕截图,你是对的,屏幕截图就像应用程序没有跟踪触摸一样拍摄。尽管如此,我仍然坚信干扰操作系统功能就等于禁用它。但我想我应该向我的客户报告这件事。
  • 他们在 iOS 7 中禁用了该效果,因此在截屏时它会继续像您的手指在屏幕上一样。这是一个 SnapChat 功能。
【解决方案2】:

当用户截屏时会发送PictureWasTakenNotificationDarwin 通知。但是,这是在截取屏幕截图之后发送的。

(在截取屏幕截图之前不会发送任何通知。)

【讨论】:

  • 该通知和 CameraImageFullSizeImageReadyNotification 似乎都不在 iPhone SDK 中。无论如何,正如您所指出的,对我来说,在截屏后触发它并不理想(因为两个通知都是)
  • 仅供参考,此功能自iOS 4.0 起已丢失。
【解决方案3】:

从 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];
}

【讨论】:

  • 实际需要的是在拍摄之前触发通知的东西。换句话说,该通知的“...UserWillTake...”版本
  • 用户截屏后如何去除图片?
  • 也无法完成,您无法以编程方式从胶卷中删除最后一张图像,即使您有相机访问权限也不行
  • @txulu 你知道 UIApplicationUserDidTakeScreenshotNotification 是否在后台模式下工作吗?或者是否存在任何在后台模式下检测屏幕截图的方法?
  • @Carol 我不确定,没有检查,但这只是系统发布的正常 NSNotification 所以我猜只要你的进程正在执行你就会得到它(例如,在进入后台后,您通常有大约 20 秒的执行时间,然后系统将您关闭;但您也可以使用一种特殊的后台模式,您可以一直执行代码)。 (简短的回答:不,它不会起作用)。
【解决方案4】:

真正需要的是在实际截屏发生之前发送的通知。一种委托方法或其他方式,让应用程序有机会在抓取过程中重新绘制您的内容。

而且没有。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2014-05-16
    • 1970-01-01
    相关资源
    最近更新 更多