出处:http://developer.huawei.com/ict/forum/thread-22575.html
由于安卓和IOS系统的差异,eSDK对安卓提供了应用级针对activity的防截屏接口,可以方便的包含企业应用防止截屏操作。但是受IOS系统限制,无法支持应用级别的防截屏。唯一可以实现防截屏的办法就是去苹果制作配置文件禁用截屏功能(注意,这是系统级的防截屏,只要安装该配置文件后,手机整个系统将无法截屏)。因此在实际项目中,IOS防截屏很少会使用。取而代之的是应用通过增加水印和做截屏审计功能进行代替。水印的接口使用说明可以参考前一份帖子(eSDK BYOD水印功能使用说明)。本文重点介绍截屏审计的使用方法。
iOS eSDK提供应用截屏审计日志上报功能。当用户在iOS设备上使用eSDK应用时执行了截屏动作,相关的操作信息将会被立即上传到后台。相关操作信息包括截屏设备基本信息、截屏的eSDK应用名称、截屏图片、截屏描述等。其中,截屏描述默认为当前截图界面的类名,如“DocumentViewController”。为了让截屏描述信息更加直观易懂,iOS eSDK提供截屏事件通知接口,当用户截屏时,eSDK通过代理通知应用并携带当前界面的类名,应用负责将截屏界面的类名转换为截屏描述或界面相关业务信息回传给eSDK,替换默认记录的类名。如下图所示:
1.1 截屏事件通知协议定义
截屏时间通知协议定义在头文件SDKMdm.h中
@protocolSDKMdmDelegate <NSObject>
@optional
//截屏事件回调函数定义:
-(NSString*)didReceivedScreenShotEvent:(NSString *)className;
@end
参数说明:
名称 | 长度 | 示例 | 必输/选输 | 说明 |
className | 无 | DocumentViewController | 必输 | 由eSDK传入参数。表示当前截图所在的类的名称 |
返回值:
应用需返回当前类的描述给eSDK。如果返回空则使用类名作为默认值。
示例代码:
AppDelegate.h
#import <UIKit/UIKit.h> #import "sdkmdm.h" @interface AppDelegate : UIResponder <UIApplicationDelegate, SDKMdmDelegate> @property (strong, nonatomic) UIWindow *window; @end |
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[SDKMdm getInstance] setDelegate:self]; //应用启动时设置截屏代理 return YES; } //由应用实现此协议,例如 -(NSString *)didReceivedScreenShotEvent:(NSString *)className { NSString *description; if([className isEqualToString:@"SecWebViewController"]) { description = @"安全浏览器"; } else if([className isEqualToString:@"DocumentViewController"]) { description = @"文档浏览"; } else if([className isEqualToString:@"MenuViewController"]) { description = @"菜单"; } return description; //返回描述 }
|
注意:截屏审计功能在SDK初始化后有效。
1.2 截屏审计开关
应用可以自定义是否开启截屏审计,默认为开启状态。注意:后台有安全审计日志开关,截屏审计属于安全日志审计。若后台未开启安全日志审计,应用即使设置开启截屏审计也是无效的。只有当后台开启了截屏日志审计,应用才能自定义开启或关闭截屏审计。
应用可通过以下eSDK接口开启或关闭截屏审计。接口定义于头文件SDKMdm.h中。
接口定义:
//开启截屏审计
-(void)startScreenShotAuditing;
//关闭截屏审计
-(void)stopScreenShotAuditing;
示例代码:
[SDKMdm getInstance] startScreenShotAuditing]; //开启截屏审计 [SDKMdm getInstance] stopScreenShotAuditing]; //关闭截屏审计 |