IOS iMessage扩展截图检测

Posted

技术标签:

【中文标题】IOS iMessage扩展截图检测【英文标题】:IOS iMessage extension screenshot detection 【发布时间】:2019-08-06 02:26:22 【问题描述】:

请使用 Swift 4+

注意:我在 iMessage 扩展程序中检测屏幕截图,而不是在标准 iMessage 视图中。

更新 - 我想出了一个可行的解决方案,在敏感信息期间每 0.3 秒左右检查一次照片库,以检查是否添加了新的屏幕截图。如果用户不授予照片库权限,则在启用之前不会向他们显示内容。但是,我仍在寻找其他不一定涉及如此繁琐过程的创造性解决方案。

我有一个 iMessage 扩展程序,我正在尝试检测屏幕截图。我已经尝试了我在网上找到的每个观察者,但由于某种原因它没有注册屏幕截图。

ViewWillAppear()

UIScreen.main.addObserver(self, forKeyPath: "captured", options: .new, context: nil)

观察者

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) 
    if (keyPath == "captured") 
        let isCaptured = UIScreen.main.isCaptured
        print(isCaptured)
        screenshot()
        //screenshot() sends a message alerting the message was screens hotted. However, the print statement didn't even run.
    

ViewWillDisappear()

UIScreen.main.removeObserver(self, forKeyPath: "captured", context: nil)

我也试过标准的默认通知中心

let mainQueue = OperationQueue.main
    NotificationCenter.default.addObserver(forName: UIApplication.userDidTakeScreenshotNotification, object: nil, queue: mainQueue)  notification in
        // executes after screenshot
        print("Screenshotted")
        self.screenshot()
    

对于声称无法在 iMessage 扩展程序中检测屏幕截图的人,因为它是一个扩展程序而不是一个完整的应用程序,这个开发者已经能够成功地做到这一点 Working Example

【问题讨论】:

你的问题不太清楚,你打算如何检测用户在没有扩展名的情况下截取了一条消息? @Tom 这是扩展程序打开时,而不仅仅是在标准 iMessage 视图中。我将问题更新为更明确 您能否详细说明您是如何测试的? @Tom 我正在使用两部 iPhone,它们都在运行应用程序,而不是模拟器 @Tom 谢谢!我无法让它工作,但希望其他人有解决方案 【参考方案1】:

也许有点矫枉过正,但您可以在受 DRM 保护的视频中转换您的图像,并且系统可以防止任何受 DRM 保护的视频的屏幕截图/屏幕共享/屏幕录制。

【讨论】:

我该怎么做?我不确定我完全理解你在说什么 FairPlay 是一种保护您的视频内容不被盗的 drm 技术(Widevine 另一个例子)。系统级别的 ios 不允许制作此类内容的屏幕截图/视频(如果此处的屏幕截图仅黑屏)。因此您可以呈现受保护的视频而不是图像 如果您只想知道是否已截取屏幕截图,这可能真的很繁重。但是,如果您想完全阻止它们,这可能是最好的方法 这似乎是个好主意,唯一的问题是我呈现的是文字,而不是照片。因此,尝试将文本转换为静态视频可能有点矫枉过正,哈哈 @LeviK 文本是一堆像素,你知道 :D

以上是关于IOS iMessage扩展截图检测的主要内容,如果未能解决你的问题,请参考以下文章

提交 iMessage 贴纸包需要 iPad 截图吗?

iOS 10 iMessage 应用扩展:如何计算超高导航栏的高度

Admob 不会为 iOS 10 iMessage 应用扩展加载广告

ios 11 imessage 扩展 message.url 无法打开 safari

显式卸载后无法重新安装 iMessage 扩展程序

iMessage 贴纸分析