版本記錄
版本號(hào) | 時(shí)間 |
---|---|
V1.0 | 2017.07.24 |
前言
在app中,很多app都有游客模式框弛,這一篇就說(shuō)一下方法辛辨。感興趣的可以看看我寫的其他小技巧。
1. 實(shí)用小技巧(一):UIScrollView中上下左右滾動(dòng)方向的判斷
2. 實(shí)用小技巧(二):屏幕橫豎屏的判斷和相關(guān)邏輯
3.實(shí)用小技巧(三):點(diǎn)擊手勢(shì)屏蔽子視圖的響應(yīng)
4.實(shí)用小技巧(四):動(dòng)態(tài)的增刪標(biāo)簽視圖
5.實(shí)用小技巧(五):通過(guò)相冊(cè)或者相機(jī)更改圖標(biāo)
6.實(shí)用小技巧(六):打印ios里所有字體
7. 實(shí)用小技巧(七):UITableViewCell自適應(yīng)行高的計(jì)算
8. 實(shí)用小技巧(八):數(shù)字余額顯示的分隔
9.實(shí)用小技巧(九):類頭條模糊背景的實(shí)現(xiàn)
10.實(shí)用小技巧(十):晃動(dòng)手機(jī)換后臺(tái)服務(wù)器網(wǎng)絡(luò)
11.實(shí)用小技巧(十一):scrollView及其子類顯示的一些異常處理
12.實(shí)用小技巧(十二):頭像圖片縮放以及保存到相冊(cè)簡(jiǎn)單功能的實(shí)現(xiàn)
13.實(shí)用小技巧(十三):一種類酷我音樂(lè)盒動(dòng)畫實(shí)現(xiàn)
14.實(shí)用小技巧(十四):生成跳往applestore指定app的方法
15.實(shí)用小技巧(十五):左側(cè)向右滑動(dòng)返回上一級(jí)控制器
16.實(shí)用小技巧(十六):獲取設(shè)備信息
17.實(shí)用小技巧(十七):清除緩存目錄
18.實(shí)用小技巧(十八):取出gif圖的每一幀
19.實(shí)用小技巧(十九):獲取相機(jī)和麥克風(fēng)權(quán)限
功能需求
??很多app都有游客模式瑟枫,游客模式有很多好處斗搞,可以讓用戶避免繁瑣的注冊(cè)流程第一時(shí)間了解app的主功能模塊,如果用戶對(duì)該app感興趣慷妙,在注冊(cè)僻焚,其實(shí)游客模式就是增強(qiáng)了用戶交互體驗(yàn)。
這一篇就講一下游客模式的主要實(shí)現(xiàn)思路和方法膝擂。
功能實(shí)現(xiàn)
首先我們看一下這個(gè)界面虑啤。
??如果用戶不注冊(cè)隙弛,點(diǎn)擊右上角的X
號(hào),那么就進(jìn)入游客模式狞山,游客模式能干什么不能干什么呢全闷?其實(shí),這個(gè)很好弄萍启,一方面需要和產(chǎn)品經(jīng)理定一下总珠,哪些界面游客模式可以跳進(jìn)去哪些不可以,另外一方面勘纯,如果涉及到個(gè)人賬號(hào)余額局服,粉絲數(shù)等等這些與個(gè)人信息緊密相連的界面,不用想太多屡律,一定不能點(diǎn)進(jìn)去腌逢,在push
那個(gè)界面之前就一定要給截住,不能讓跳過(guò)去超埋。
這里的思路:
- 點(diǎn)擊
X
方法里面,存儲(chǔ)協(xié)議好的token
值佳鳖,然后跳轉(zhuǎn)到主頁(yè) - 在要進(jìn)入某個(gè)不想讓游客進(jìn)入的頁(yè)面霍殴,就發(fā)送通知,然后統(tǒng)一監(jiān)聽(tīng)通知并在請(qǐng)求接口的時(shí)候系吩,返回token過(guò)期的提示来庭,迫使用戶重新來(lái)到登錄頁(yè)面。
下面我們看一下點(diǎn)擊完X
號(hào)需要做什么?
@property (nonatomic, assign) BOOL isYou;
- (void)deleteButtonClick;
{
//游客模式登錄入口
//如果是游客模式穿挨,那么就存儲(chǔ)一下自己和后臺(tái)協(xié)商定義的token月弛,這里寫成了宏kYoukeToken
JJUserInfo *userInfo = [[ JJUserInfo alloc] init];
userInfo.token = kYoukeToken;
[ JJConfig saveProfile:userInfo];
if (_isYou) {
[UIApplication sharedApplication].statusBarHidden = NO;
[self dismissViewControllerAnimated:YES completion:nil];
}
else {
JJmianTabBarVC *tabBarVC = [[JJmianTabBarVC alloc] init];
[UIApplication sharedApplication].keyWindow.rootViewController = tabBarVC;
[self presentViewController:tabBarVC animated:YES completion:nil];
}
}
下面看一下統(tǒng)一監(jiān)聽(tīng)通知的地方,在主tabBar
控制器內(nèi)進(jìn)行監(jiān)聽(tīng)通知科盛。
JJmianTabBarVC.m
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(layout) name:kTokenExpired object:nil];
- (void) layout
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:kTokenExpired object:nil];
[JPUSHService setAlias:@"" callbackSelector:nil object:nil];
SSEBaseUser *user = [SSEThirdPartyLoginHelper currentUser];//退出第三方登錄
BOOL logout =[SSEThirdPartyLoginHelper logout:user];
if (logout) {
DDLogDebug(@"退出登錄成功");
}else{
DDLogDebug(@"退出登錄失敗");
}
//接收到游客通知帽衙,直接跳轉(zhuǎn)到登錄界面
JJLoginVC *login = [[ JJLoginVC alloc] init];;
login.isYou = YES;
UINavigationController *navigationCon = [[UINavigationController alloc] initWithRootViewController:login];
[[ JJMessageDataTool shareMessageTool] layoutEMClient];
[JJConfig clearProfile];
[self presentViewController:navigationCon animated:YES completion:nil];
}
下面看一下要在跳轉(zhuǎn)到不應(yīng)該游客跳轉(zhuǎn)的地方,加入下面的邏輯處理贞绵。
if ([[JJConfig myProfile].token isEqualToString:kYoukeToken]) {
[[NSNotificationCenter defaultCenter] postNotificationName:kTokenExpired object:nil];
return;
}
功能驗(yàn)證
下面我們就演示一下厉萝,登錄模式的使用,現(xiàn)在假想我們已經(jīng)點(diǎn)擊完X
號(hào)并進(jìn)入了主頁(yè)榨崩,下面我們點(diǎn)擊一下個(gè)人中心的錢包谴垫,看一下。
可以看見(jiàn)母蛛,點(diǎn)擊個(gè)人中心翩剪,由于游客沒(méi)有權(quán)限,直接退出到登錄界面彩郊。
后記
未完前弯,待續(xù)~~~~