关于iOS禁止截屏

背景

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

实现方式

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

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

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

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

    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针对截屏的处理方式,以微信和支付宝的付款码为例,都是在截屏后进行相关提示,实际上支付码截图已保存到系统相册应用中。

    • 微信付款码截屏提示


      微信付款码截屏提示.jpeg
    • 支付宝付款码截屏提示


      支付宝付款码截屏提示.png

参考

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,638评论 25 708
  • 修养德行 增强智慧 提高能力
    悠然纤纤阅读 129评论 0 0
  • X射线测厚仪是利用X射线穿透被测材料时,X射线的强度的变化与材料的厚度相关的特性,从而测定材料的厚度,是一种非接触...
    瞎弄吧阅读 953评论 0 0
  • 下面是一点聊天记录,引出我回答的兴趣。中国队为什么在团队运动上,老是没法取胜?中国足球未来也没有希望吗? 网友:今...
    401文子阅读 241评论 0 1
  • 早上好#易效能 # 蒋小园 2017/08/04(260/300) 【不忘初心,坚持始终】 健康:作息《昨晚今早》...
    圆圆jXY阅读 347评论 1 1