配置環境:
pod 'SSKeychain'
SSKeyChain主要的api
// 保存對應賬戶密碼
+ (BOOL)setPassword:(NSString *)password forService:(NSString *)serviceName account:(NSString *)account;
// 提取對應賬戶密碼
+ (NSString *)passwordForService:(NSString *)serviceName account:(NSString *)account;
// 刪除對應賬戶密碼
+ (BOOL)deletePasswordForService:(NSString *)serviceName account:(NSString *)account;
// 獲取APP下所有賬戶
+ (NSArray *)accountsForService:(NSString *)serviceName;
//如果存儲的密碼是NSData
+ (NSData *)passwordDataForService:(NSString *)serviceName account:(NSString *)account;
+ (BOOL)setPasswordData:(NSData *)password forService:(NSString *)serviceName account:(NSString *)account;
SSKeyChain參數說明:
SSKeyChain的方法中涉及到的變量主要有三個, password、service、account。password、account分別保存的是密碼和用戶名信息。 service保存的是服務的類型,就是用戶名和密碼是為什么應用保存的一個標志。比如一個用戶 可以再不同的論壇中使用相同的用戶名和密碼,那么service保存的信息分別標識不同的論壇。由于包名通常具有一定的唯一性,通常在程序中可以用包的名稱來作為service的標識。
SSKeyChain和NSUserDefaults的比較
- NSUserDefaults數據以明文的形式保存在,而且存儲的數據會隨著APP卸載而刪掉
- SSKeyChain是將數據加密后存儲在本地,更安全,SSKeyChain存儲的數據不會刪除
示例:
code:
//說明:account、service、password分別為賬戶、服務名、密碼,
[SSKeychain setPassword:@"123456" forService:@"pwd" account:@"xm"];
NSLog(@"xm 的 信息%@",[SSKeychain passwordForService:@"pwd" account:@"xm"]);
if ([SSKeychain deletePasswordForService:@"pwd" account:@"xm"]) {
NSLog(@"刪除成功");
NSLog(@"xm 的 信息%@",[SSKeychain passwordForService:@"pwd" account:@"xm"]);
}else
{
NSLog(@"刪除失敗");
NSLog(@"xm 的 信息%@",[SSKeychain passwordForService:@"pwd" account:@"xm"]);
}