// 网络数据缓存
网络缓存数据,保存在SQLite的数据库中(NSHomeDirectory()),
//查看缓存的数据命令行:
cd 文件目录 (打开文件目录)
ls 查看当前文件下目录
sqlite3 Cache.db 打开数据库
.tables 查看数据库中的表单
select * from cfurl_cache_response; 查看服务器响应缓存
select * from cfurl_cache_receiver_data; 查看服务器返回的数据缓存
URL:使用注意
<1>URL中,所有的字符都必须是 ASCII 码;
<2>URL中不能出现中文和特殊符号(如空格);
所以,如果 URL 中出现了中文,需要添加百分号转译.
// GET/POST 登陆 UI界面的搭建注意:
iphone6+ 防边缘触摸
移动端应用默认应该记住密码
<1>保存到用户偏好设置
版本管理
git
偏好设置保存用户信息
用户密码不能以明文的形式保存,需要对用户密码加密之后再保存.
加密:
<1> base64 :iOS 7.0 以后,苹果提供base64的编码解码支持.
<2> MD5
<1>加盐: 加盐要足够长,足够复杂.
<2>HMAC: 一个结合了散列函数的加密算法;给定一个秘钥,分别作两次加密和散列.
<3>用户密码是动态变化的. --- 时间戳密码
给定相同的加密算法和相同的密码明文,要求每次登陆的时候,密码都不一样.两个密码只要有一个相同就可以了
IP辅助/手机绑定
<3> 钥匙串访问 iOS 7.0.3以后支持 AES 256 加密 是安全的.
SSKeyChain 是对底层 C 语言的封装.
如果没有钥匙串访问,本地密码的保存会相当的繁琐,需要使用RSA(秘钥) & AES(加密&解密)
BundleID ------- 应用程序的唯一的标识,每一个上架的应用程序,都有唯一的BundleID
获取BundleID: [NSBundle mainBundle].bundleIdentifier;
<4> 指纹识别
指纹识别: 功能是5s之后推出的, SDK 是 iOS 8.0之后推出的.同时推出 ApplePay
推出的目的是简化支付.移动支付环节越简单越好.
使用:
<1>导入头文件
#import <LocalAuthentication/LocalAuthentication.h>
<2>使用
<3>判断系统版本
当前系统版本: [UIDevice currentDevice].systemVersion.floatValue