關(guān)于APP后登錄的實(shí)現(xiàn)思路分析

前言

目前APP登錄有兩種方式:

  1. 啟動(dòng)程序后必須先登錄新荤,成功后才能進(jìn)入主界面
  2. 先進(jìn)入主界面,當(dāng)用戶動(dòng)作觸發(fā)個(gè)人信息的時(shí)候才去登錄

寫(xiě)這篇文章著重于分析第二種情況的實(shí)現(xiàn)思路鸿染,以及實(shí)現(xiàn)的幾種方式

實(shí)現(xiàn)思路

實(shí)現(xiàn)后登衡便,就需要把登錄的信息存儲(chǔ)到本地,當(dāng)需要判斷是否登錄的時(shí)候骂租,本地本地的個(gè)人登錄數(shù)據(jù)來(lái)做判斷祷杈。需要登錄,模態(tài)出登錄的頁(yè)面渗饮,本人簡(jiǎn)單的做了個(gè)相關(guān)的demo

  1. 最傳統(tǒng)的實(shí)現(xiàn)方式但汞,附上相關(guān)代碼:

     NSString * username = [[NSUserDefaults standardUserDefaults] objectForKey:@"username"];
    NSString * password = [[NSUserDefaults standardUserDefaults] objectForKey:@"password"];
    
    if (!stringIsEmpty(username)&&!stringIsEmpty(password)) {
        //已登錄
        [self performSegueWithIdentifier:@"myRecordSegue" sender:nil];
    }else{
        //跳轉(zhuǎn)到登陸頁(yè)面
        UIViewController * loginViewController = [CommonTool sbWithName:@"Main" identifier:@"LoginViewController"];
        UINavigationController * navgationVC = [[UINavigationController alloc] initWithRootViewController:loginViewController];
        [self presentViewController:navgationVC animated:YES completion:^{
            
        }];
    }
    

    demo上簡(jiǎn)單的做了個(gè)本地存儲(chǔ),真正項(xiàng)目里面最好需要轉(zhuǎn)成單例去做是否登錄判斷互站。好了私蕾,后登實(shí)現(xiàn)了。
    but胡桃,but踩叭,感覺(jué)好麻煩的樣子!一坨代碼好長(zhǎng),如果應(yīng)用中有N個(gè)地方都需要容贝,那豈不是好多冗余的代碼W愿!嗤疯!好吧冤今,做個(gè)改進(jìn)版。茂缚。戏罢。

  2. 采用繼承的思想,把相關(guān)代碼封裝到基類【baseViewController&&baseTableViewController】

abc.png

好吧脚囊,算是升華了一級(jí)吧龟糕,具體使用的時(shí)候,只需要關(guān)注登錄后的代碼 即可

       if ([self isCheckingLogined]) {
           
           [self performSegueWithIdentifier:@"myRecordSegue" sender:nil];
       }

當(dāng)然悔耘,這種實(shí)現(xiàn)讲岁,通用可以用類別實(shí)現(xiàn),用類別的話衬以,只需要寫(xiě)UIViewController的類別即可

好像已經(jīng)解決了繁瑣的代碼缓艳,似乎完美了,不過(guò)看峻,為毛我點(diǎn)了收藏按鈕阶淘,登錄之后,好像我還得再點(diǎn)一次才能收藏成功互妓,好麻煩的趕腳溪窒。還有,我有些 地方取消登錄了冯勉,要告知具體的地方澈蚌,或許要做一些其他的操作。

實(shí)現(xiàn)方式有兩種灼狰,代理和block宛瞄。

  1. 用block把登陸或者取消登錄操作告知具體的頁(yè)面

    @interface LoginViewController : BaseViewController
    
    @property (nonatomic, copy) ZCBasicBlock loginOkBlock;
    @property (nonatomic, copy) ZCBasicBlock loginCancelBlock;
    
    @end
    

loginCancelBlock調(diào)用時(shí)機(jī),是在取消登錄[關(guān)閉登錄頁(yè)面]的時(shí)候調(diào)用
loginOkBlock調(diào)用時(shí)機(jī)交胚,是在登錄成功的時(shí)候調(diào)用坛悉,具體代碼就不贅述,詳細(xì)參考demo

依舊采用繼承的方式

bcd.png

具體使用的地方承绸,也很簡(jiǎn)單

    [self checkLoginWithLoginedBlock:^{
        
        NSLog(@"login sucess");
        [self performSegueWithIdentifier:@"myRecordSegue" sender:nil];
        
    } loginCancelBlock:^{
        NSLog(@"cancel login");
    }];
    
同樣,這種實(shí)現(xiàn)方式也可以寫(xiě)成類別[個(gè)人推薦類別挣轨,畢竟只要寫(xiě)UIViewController的類別即可]

拓展

以上幾種方式军熏,基本已經(jīng)能滿足后登錄的需求實(shí)現(xiàn),不過(guò)還有一種實(shí)現(xiàn)思路:

可以把需要登錄才能展現(xiàn)的頁(yè)面對(duì)應(yīng)的類整理起來(lái)卷扮,放到數(shù)組里面荡澎,重寫(xiě)導(dǎo)航的push方法均践,在這一層做個(gè)過(guò)濾,我把它稱作頁(yè)面攔截摩幔,具體需要登錄展現(xiàn)的頁(yè)面彤委,我都不用去關(guān)心到底是否登錄。

FeaturedViewController * featuredVC = [[FeaturedViewController alloc] init];
//self.navigationController 是你要重寫(xiě)的導(dǎo)航類
[self.navigationController pushViewController:featuredVC animated:YES];
cde.png

checkContollerIsNeedLogin實(shí)現(xiàn)方法如下

- (BOOL )checkContollerIsNeedLogin:(UIViewController*)controller
{
    for (NSString * classString in self.needLoginsArray) {
        
        Class tempClass = NSClassFromString(classString);
        
        if ([controller isKindOfClass:tempClass]) {
            
            return YES;
        }
    }
    return NO;
}

對(duì)于點(diǎn)擊按鈕進(jìn)行頁(yè)面跳轉(zhuǎn)的可以使用此方式或衡,像本頁(yè)面操作[點(diǎn)擊關(guān)注焦影,收藏等動(dòng)作]可能就無(wú)法使用該功能。這個(gè)嘛就見(jiàn)仁見(jiàn)智了

代碼鏈接:https://github.com/albertjson/LoginDemo
對(duì)于文章中有意見(jiàn)的封断,歡迎交流斯辰!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市坡疼,隨后出現(xiàn)的幾起案子彬呻,更是在濱河造成了極大的恐慌,老刑警劉巖柄瑰,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闸氮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡教沾,警方通過(guò)查閱死者的電腦和手機(jī)蒲跨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)详囤,“玉大人财骨,你說(shuō)我怎么就攤上這事〔亟悖” “怎么了隆箩?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)羔杨。 經(jīng)常有香客問(wèn)我捌臊,道長(zhǎng),這世上最難降的妖魔是什么兜材? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任理澎,我火速辦了婚禮,結(jié)果婚禮上曙寡,老公的妹妹穿的比我還像新娘糠爬。我一直安慰自己,他們只是感情好举庶,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布执隧。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪镀琉。 梳的紋絲不亂的頭發(fā)上峦嗤,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音屋摔,去河邊找鬼烁设。 笑死,一個(gè)胖子當(dāng)著我的面吹牛钓试,可吹牛的內(nèi)容都是我干的装黑。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼亚侠,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼曹体!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起硝烂,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤箕别,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后滞谢,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體串稀,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年狮杨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了母截。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡橄教,死狀恐怖清寇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情护蝶,我是刑警寧澤华烟,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站持灰,受9級(jí)特大地震影響盔夜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜堤魁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一喂链、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧妥泉,春花似錦椭微、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)检诗。三九已至,卻和暖如春瓢剿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背悠轩。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工间狂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人火架。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓鉴象,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親何鸡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子纺弊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 前言的前言 唐巧前輩在微信公眾號(hào)「iOSDevTips」以及其博客上推送了我的文章后,我的 Github 各項(xiàng)指標(biāo)...
    VincentHK閱讀 5,341評(píng)論 3 44
  • 1,Search Bar 怎樣去掉背景的顏色(storyboard里只能設(shè)置background顏色骡男,可是發(fā)現(xiàn)cl...
    以德扶人閱讀 2,331評(píng)論 2 50
  • 大三的時(shí)候看過(guò)三浦春馬主演的一部勵(lì)志片淆游,叫《我存在的時(shí)間》。三浦春馬在劇中飾演患上ALS病癥(肌萎縮側(cè)索硬化癥)的...
    姍姍_Gulam閱讀 797評(píng)論 0 3
  • 71.come into fashion 開(kāi)始風(fēng)行 72.follow the fashion 趕時(shí)髦 73.se...
    Sharewealorwoel閱讀 151評(píng)論 0 0
  • 走走停停隔盛,高中結(jié)束犹菱,才發(fā)現(xiàn)所謂電視劇上的情節(jié),一件都沒(méi)在我身上發(fā)生吮炕。
    因?yàn)橐粋€(gè)人閱讀 146評(píng)論 0 0