美文网首页iOS
iOS开发 登录退出流程

iOS开发 登录退出流程

作者: 若风_412d | 来源:发表于2019-05-15 17:56 被阅读0次

    1.一个账号不能多个设备使用

    https://www.jianshu.com/p/a0bdaa0919f1

    https://www.jianshu.com/p/9ff7f3ae486d
    2.登录

    2.1新建一个mode :存储用户信息

    #import <Foundation/Foundation.h>
    //从服务器上获取的用户信息
    @interface UserInfoModel : NSObject
    @property (copy, nonatomic) NSString *mobile;
    @property (copy, nonatomic) NSString *agentId;
    @property (copy, nonatomic) NSString *userId;
    @property (copy, nonatomic) NSString *password;
    @property (copy, nonatomic) NSString *passWord;
    @property (assign, nonatomic) int userType;
    @end
    

    2.2 .m中实现nscode协议 加密用的

    #import "UserInfoModel.h"
    
    @implementation UserInfoModel
    - (void)encodeWithCoder:(NSCoder *)encoder
    {
        [encoder encodeObject:self.mobile forKey:@"mobile"];
        [encoder encodeObject:self.agentId forKey:@"agentId"];
        [encoder encodeObject:self.userId  forKey:@"userId"];
        [encoder encodeInt: self.userType  forKey:@"userType"];
    }
    
    -(id)initWithCoder:(NSCoder *)decoder
    {
        if(self = [super init])
        {
            self.mobile = [decoder decodeObjectForKey:@"mobile"];
            self.agentId = [decoder decodeObjectForKey:@"agentId"];
            self.userId = [decoder decodeObjectForKey:@"userId"];
            self.userType = [decoder decodeIntForKey:@"userType"];
            
        }
        return  self;
    }
    @end
    

    2.3 存储和取出用户信息 新建一个类

      //存储
    + (void)saveInfoAboutLoginInfo:(UserInfoModel *)model
    {
        NSData *data = [NSKeyedArchiver archivedDataWithRootObject:model];
    NSUserDefaults *userDefaults=    [[NSUserDefaults standardUserDefaults] setObject:data forKey:DEFAULTS_USERINFO];
    [userDefaults synchronize];
    //@需要注意的是,NSUserDefaults是定时把缓存中的数据写入磁盘的,而不是即时写入,为了防止在写完NSUserDefaults后程序退出导致的数据丢失,可以在写入数据后使用synchronize强制立即将数据写入磁盘:
    }
    //获取
    + (UserInfoModel *)getInfoAboutLoginInfo
    {
        NSData *encodedObject = [[NSUserDefaults standardUserDefaults] objectForKey:DEFAULTS_USERINFO];
        id model = [NSKeyedUnarchiver unarchiveObjectWithData:encodedObject];
        if (IsNilOrNull(model))
        {
            return  nil;
        }
        else
        {
            return (UserInfoModel *)model;
        }
    }
    
    

    2.4检测用户是否登录

    + (BOOL)checkInfoAboutIsLogin
    {
        if (IsNilOrNull([CommonInfo getInfoAboutLoginInfo]))
        {
            return NO;
        }
        else
        {
            return YES;
        }
    }
    

    3.退出登录
    @如果想删除某个数据项,可以使用removeObjectForKey删除数据:
    [mySetting removeObjectForKey:@"arrItem"];
    也可以保存一个空

           [CommonInfo saveUserName:nil passWord:nil];
    //还有推送也要处理
    //最后跳跳转看需求跳把:跳到跟控制器不用pop
    BaseNavViewController *navVC = [[BaseNavViewController alloc] initWithRootViewController:tabbarVC];
                   [self.window setRootViewController:navVC];
                   [self.window makeKeyAndVisible];
    

    4.登录失败,
    5.登录成功,接下来,获取用户信息失败
    5.1iOS网络请求重发机制

    //这个是写在封装的网络请求的文件下的
    - (void)downloadFileRetryingNumberOfTimes:(NSUInteger)ntimes 
                                      success:(void (^)(id responseObject))success 
                                      failure:(void (^)(NSError *error))failure
    {
        if (ntimes <= 0) {//区分是不是最后一次重发的结果
    //最后一次重发的结果,
     if (success) {
                    success(...);
                }
            if (failure) {
                NSError *error = ...;
                failure(error);
            }
    
        } else {
    //不是最后一次重发的结果
            [self getPath:@"/path/to/file" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
                if (success) {
                    success(...);
                }
            } failure:^(AFHTTPRequestOperation *operation, NSError *error) {//重发
                [self downloadFileRetryingNumberOfTimes:ntimes - 1 success:success failure:failure];
            }];
        }
    }
    
    

    4

    相关文章

      网友评论

        本文标题:iOS开发 登录退出流程

        本文链接:https://www.haomeiwen.com/subject/jmsmaqtx.html