关于iOS禁止截屏
背景
在日常开发的一些业务场景中,如果涉及到一些敏感信息(如:付款的二维码或条形码等),而我们不希望相关敏感信息被随意传播。此时自然就会产生禁止截屏这个需求。
实现方式
禁止截屏主要有以下两种实现方式:
-
通过MDM(Mobile Device Management)下发Configuration Profile文件
配置文件可以使用Apple Configurator 2配置工具(可通过App Store下载)生成,然后通过MDM服务器下发给相关设置,即可实现控制相关系统功能。
下载Apple Configurator 2后,可通过
mobile-configprofile文件->新建描述文件
生成后缀为.mobileconfig配置文件,如下图所示。
通过上图可以看到,禁止截屏
只是茫茫多可控功能中的一种。
但是这种方式只使用于企业内部或教育相关机构,前提是企业或相关机构可以控制这些设备的使用行为和使用方式,显然这种方式不适合通过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