关于iOS禁止截屏

背景

在日常开发的一些业务场景中,如果涉及到一些敏感信息(如:付款的二维码或条形码等),而我们不希望相关敏感信息被随意传播。此时自然就会产生禁止截屏这个需求。

实现方式

禁止截屏主要有以下两种实现方式:

  • 通过MDM(Mobile Device Management)下发Configuration Profile文件

    配置文件可以使用Apple Configurator 2配置工具(可通过App Store下载)生成,然后通过MDM服务器下发给相关设置,即可实现控制相关系统功能。

    下载Apple Configurator 2后,可通过文件->新建描述文件 生成后缀为.mobileconfig配置文件,如下图所示。

    关于iOS禁止截屏_第1张图片
    mobile-configprofile

通过上图可以看到,禁止截屏只是茫茫多可控功能中的一种。

但是这种方式只使用于企业内部或教育相关机构,前提是企业或相关机构可以控制这些设备的使用行为和使用方式,显然这种方式不适合通过App Store分发应用的情况。

  • App Store分发

    通过App Store分发的应用目前尚无有效的方式来实现禁止截屏操作。
    不过从iOS7开始Apple提供了UIApplicationUserDidTakeScreenshotNotification通知来告知用户已经进行截屏操作。可以监听该通知并进行相应的提示。

    NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];
    [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationUserDidTakeScreenshotNotification
                                                  object:nil
                                                   queue:mainQueue
                                              usingBlock:^(NSNotification *note) {
                                                          //截屏已经发生,可进行相关提示处理
                                                 
                                              }];
    
    

    行业内其它App针对截屏的处理方式,以微信和支付宝的付款码为例,都是在截屏后进行相关提示,实际上支付码截图已保存到系统相册应用中。

    • 微信付款码截屏提示


      关于iOS禁止截屏_第2张图片
      微信付款码截屏提示.jpeg
    • 支付宝付款码截屏提示


      关于iOS禁止截屏_第3张图片
      支付宝付款码截屏提示.png

参考

Mobile Device Management Protocol Reference
Configuration Profile
Apple iOS MDM service 簡介
Prevent screen capture in an iOS app

你可能感兴趣的:(关于iOS禁止截屏)