由于如今作的是企业版的APP,不能保证用户不越狱,也不能保证有些用户喜欢本身修改ipa包里的资源文件,好比更换一些资源图片。所以,咱们有必要在请求报文中,增长正版应用的二进制和资源文件的标识,让服务器知道,此请求是否来自正版的未经修改的app。服务器
在沙盒中咱们能够读到本身程序的二进制,也能够读到资源文件签名文件,咱们能够对其取md5值获得一个标记字符串,而后发给服务器,对比存储在服务器段的MD5值是否正确,若是APP被修改就禁止继续使用,杀掉本身的进程。app
下面是获取本身APP的二进制、资源文件和签名文件的获取方法。由于从iOS8开始沙盒机制有所变化,文稿和资源文件分开在不一样的路径,并且文稿是一个动态的路径,因此获取方法要区分系统版本。加密
下面贴代码:blog
定义加密类型(MD5 SHA1 SHA512)进程
封装加密方法图片
获取资源包的加密后字符串ip
获取签名证书加密后的字符串md5
能够根据本身的须要把这些信息发送给服务器进行判断,如今咱们作的是APP版本号、iPhone版或iPad版再加上面两条字符串发给服务器。资源
外加自动杀掉本身进程的方法:字符串
补充:忽然发如今打包以前clean一下,获取到的sourceData会改变,如今的作法是增长一个弹出的alertView,title是获取的sourcedata的md5值,每次打包前clean一次,而后run一次,经过弹出的提示手动记录一下md5值,而后注释掉alertView的代码,这时候再打包,注意此次就不要clean了,只改变几行简单的代码不会影响APP的功能也不会改变appdata和sourcedata。(若是发现其余更好的方法会及时更新)