一、键盘样式
- 考虑不同键盘,适应不同的内容
二、登录方式
使用第三方(QQ、微信、新浪)登入,前提是苹果要求必须有自己的账号系统!
设计上对应没有安装第三方软件,给出提示或者影藏按钮,具体操作看对应平台文档,
三、自动登录、单点登录
- 用户名、密码自动登录
用户名可以自行操作,密码需要保存,这里通过“钥匙串”保存,可以使用第三方库“SFHFKeychainUtils”
ServiceName是软件标识,可以自行设置,取值时会用到
//保存密码
if (userName && password) {
NSError *error;
[[NSUserDefaults standardUserDefaults] setValue:userName forKey:@"LOGIN_NAME"];
BOOL saved = [SFHFKeychainUtils storeUsername:userName andPassword:password forServiceName:ServiceName updateExisting:YES error:&error];
if(!saved){
DDLogError(@"保存密码时出错:%@",error.localizedDescription);
}
}
NSString *userName = [[NSUserDefaults standardUserDefaults] valueForKey:@"LOGIN_NAME"];
NSError *error;
NSString * password = [SFHFKeychainUtils getPasswordForUsername:userName andServiceName:ServiceName error:&error];
if(error){
DDLogError(@"从Keychain里获取密码出错:%@",error);
return;
}
- Token自动登录,第一次保存的Token,直接请求,获取信息,重新设置各种配置
//保存登录信息
NSString *file = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/UserLogin.data"];
[NSKeyedArchiver archiveRootObject:login toFile:file];
[[NSUserDefaults standardUserDefaults] setValue:login.Data.Token forKey:@"Token"];
[[NSUserDefaults standardUserDefaults] synchronize];
- 单点登录,我碰到的是嵌入到项目的第三方及时通信中去,通过他来监听上线下线
四、联合登录
前提:保证同一个开发者账号下的App才可以
也是保存钥匙串的方式,保存信息,同个手机都可以读取,实现联合登录
使用第三方”KeychainItemWrapper“
//保存sessionID
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:kKMHealthCloudKey accessGroup:nil];
[wrapper setObject:login.Data.SessionId forKey:(id)kSecValueData];
[wrapper setObject:login.Data.AccountName forKey:(id)kSecAttrAccount];
//判断本地的sessionID
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:kKMHealthCloudKey accessGroup:nil];
NSString * sessionID = [wrapper objectForKey:(id)kSecValueData];
if (sessionID.length == 0 || !sessionID) {
//未能获取到sessionID
return;
}
//判断sessionID是否有效
[self loginRequestWithSessionID:sessionID];
```