對支付寶產(chǎn)品細節(jié)的提一個小小建議

原由

問題的原由很簡單疹味,就是我在使用支付寶花唄功能是,由于網(wǎng)絡(luò)慢的原因重復(fù)點擊了我的賬單和我的額度時盖腕,出現(xiàn)頁面重復(fù)加載的情況钝域。點擊次數(shù)和加載次數(shù)是相同的(我點擊了5次跳了5次),并且是可以穩(wěn)定復(fù)現(xiàn)的妇萄。但是這個小bug蜕企,說實話咬荷,無足輕重,完全不影響使用轻掩,更不會誤導用戶萍丐。
大概是去年11月我是發(fā)現(xiàn)過微信的一個導致app卡死的bug,當時沒有什么頭緒,后來也就放棄思考沒有記錄放典,至今懊惱不已逝变。所以這次本著發(fā)現(xiàn)問題解決問題不逃避的想法,還是把這個寫下來奋构。雖然很easy壳影,但求不被拍磚。

支付寶.png

原因

其實問題的原因很容易就猜到弥臼,是在花唄頁面點擊我的賬單是宴咧,app請求數(shù)據(jù),但是由于網(wǎng)絡(luò)的原因径缅,接受數(shù)據(jù)大概延遲了兩秒掺栅。而在這期間我以為有什么問題,所以點擊了五次纳猪。在接受數(shù)據(jù)時氧卧,點擊事件由于沒有檢測的原因而執(zhí)行了5次,于是頁面跳轉(zhuǎn)了5次氏堤。
其實這個問題我自己在開發(fā)過程中也是發(fā)現(xiàn)過好幾次沙绝,比如在亞程旅游iOSapp的自由行城市選擇中,由于數(shù)據(jù)量大且有多個接口鼠锈,會使用戶明顯感覺到延遲闪檬,用戶在animation動畫出現(xiàn)前快速點擊兩次,會有出現(xiàn)重復(fù)跳轉(zhuǎn)的情況购笆。直到這會兒才總結(jié)這個問題粗悯,慚愧。以前我是加個bool值來判斷是否執(zhí)行同欠,我覺得這是很簡潔明了的样傍。但是如果有同樣的情況又將要寫重復(fù)的代碼,所以將這個無論多少次點擊跳轉(zhuǎn)頁面且執(zhí)行一次的功能寫成category行您。

解決方案

方案一外部阻止處理點擊事件

通過bool值來判斷是否執(zhí)行過铭乾。代碼量比較少就貼下了。

@interface UIView (delay)
@property (nonatomic, copy) dispatch_block_t oneTapBlock;
@property (nonatomic, assign) BOOL taskShouldBeCanceled;
@end

@implementation UIView (delay)
- (void)setOneTapBlock:(dispatch_block_t)oneTapBlock{
    oneTapBlock();
//**細節(jié)在這里
    self.taskShouldBeCanceled = YES;
}
- (dispatch_block_t)oneTapBlock{
    return self.oneTapBlock;
}
- (void)setTaskShouldBeCanceled:(BOOL)taskShouldBeCanceled{
//**細節(jié)在這里
    objc_setAssociatedObject(self, @"taskShouldBeCanceled", @(!taskShouldBeCanceled), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (BOOL)taskShouldBeCanceled{
    return [objc_getAssociatedObject(self, @"taskShouldBeCanceled") boolValue];
}
@end
#import "BaseViewController.h"
#import "UIView+delay.h"

@interface BaseViewController ()
@property (nonatomic, strong) UIButton *button;
@end

@implementation BaseViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    _button = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 100, 50)];
    _button.backgroundColor = [UIColor redColor];
    [self.view addSubview:_button];
    [_button addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];
}

- (void)click {
    __weak typeof(self) weakSelf = self;
    if (!_button.taskShouldBeCanceled) {
        _button.oneTapBlock = ^{
          //只需要將點擊事件代碼寫在這里就可以
            UIViewController *vc = [[UIViewController alloc] init];
            vc.title = [NSString stringWithFormat:@"%@", @(arc4random() % 10)];
            [weakSelf.navigationController pushViewController:vc animated:YES];
        };
    }
}
@end
方案二內(nèi)部阻止處理點擊事件

這個感覺比較困難娃循,因為要在block內(nèi)部檢測自己是否已經(jīng)被執(zhí)行過炕檩,在跳轉(zhuǎn)頁面的這種情況可以通過當前viewcontroller來決定執(zhí)行block內(nèi)的點擊事件。但是如果要在block內(nèi)部來取消自己,感覺這是比較困難的笛质,如果各位大神有什么好的想法懇求不吝賜教泉沾。

引申支付寶單車掃描

在使用的過程中我感覺,支付寶的掃描速度是要略微比微信慢的妇押。一般微信點擊后感覺都沒有開始掃描就已經(jīng)識別二維碼跷究,然后請求數(shù)據(jù)了。而支付寶感覺開始掃描了一秒或者0.5秒這樣才識別二維碼敲霍,然后請求數(shù)據(jù)了俊马。這種毫秒級別的掃描,在平時可能沒有什么太大的影響肩杈,但是在每天早上騎車上班的時候柴我,確實被我放大了很多倍。另外在高頻次的日常掃描支付的時候扩然,我想各位看官也是能夠體會到這種差別的艘儒。不得不承認微信的掃描優(yōu)化獨步江湖。
另外在使用單車的時候夫偶,其實我想問問為什么沒有暫停功能界睁。每次回家的時候會路過一些便利店或者是想要吃飯,但是如果把車放在外面不關(guān)閉兵拢,等我出來的時候車就被人騎走了翻斟。騎走了倒也無所謂,你倒是不騎了就給我關(guān)了啊卵佛。結(jié)果我在第二天早上杨赤,掃描時說我已經(jīng)騎了八百多分鐘敞斋,好像要十幾塊大洋截汪,欲哭無淚。但是我在聯(lián)系客服時植捎,說明異常后沒有扣款衙解,這一點我是比較欣慰的。說到這個焰枢,想起了我一個哥們兒蚓峦,也是類似的情況,但是騎的是mobike結(jié)果更是扣了幾十塊(心疼一秒鐘)济锄。其實單車可以更加人性化的暑椰,比如暫停功能,每天消費上限等等荐绝。
總之一汽,一個服務(wù)更厲害,一個產(chǎn)品更厲害。

我的建議

我有什么建議召夹?當然他們可以認同我提出的bug岩喷,并認同我的解決方案啊。
github源碼

取消用戶點擊事件跨平臺操作方案

由于有兩位觀眾老爺?shù)臒崃矣懻摷嘣鳎o了我一點啟發(fā)纱意。
無論是native還是hybrid在前一頁面請求數(shù)據(jù)后跳轉(zhuǎn)到下一頁面,如果沒有做優(yōu)化鲸阔,在網(wǎng)絡(luò)不佳的情況下就容易出現(xiàn)本文的問題偷霉。
1.如果是H5,可以利用定時器讓函數(shù)延遲執(zhí)行100ms,在100ms內(nèi)如果還出發(fā)了函數(shù)可以刪除上一次調(diào)用褐筛。最關(guān)鍵的就是這一點上了腾它,js里面是可以取消函數(shù)調(diào)用的。
2.ios端死讹,解決方案有很多
2.1在用戶點擊后500ms內(nèi)不允許點擊瞒滴,當點擊事件執(zhí)行時恢復(fù)點擊(外部控制)。
2.2如本文設(shè)置bool值來阻止點擊事件執(zhí)行(外部控制)赞警。
2.3如果是寫在block里面妓忍,而block是無法直接取消的,如果想要在內(nèi)部取消可能需要建立檢測(這一點我現(xiàn)在不知道如何下手愧旦,有大神指教木有)世剖,這樣做比較麻煩。
3.android端笤虫,解決方案類似旁瘫。
(注:最好是將這一功能抽出來,免得到處都是重復(fù)的代碼琼蚯。)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末酬凳,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子遭庶,更是在濱河造成了極大的恐慌宁仔,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件峦睡,死亡現(xiàn)場離奇詭異翎苫,居然都是意外死亡,警方通過查閱死者的電腦和手機榨了,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門煎谍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人龙屉,你說我怎么就攤上這事呐粘。” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵事哭,是天一觀的道長漫雷。 經(jīng)常有香客問我,道長鳍咱,這世上最難降的妖魔是什么降盹? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮谤辜,結(jié)果婚禮上蓄坏,老公的妹妹穿的比我還像新娘。我一直安慰自己丑念,他們只是感情好涡戳,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脯倚,像睡著了一般渔彰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上推正,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天恍涂,我揣著相機與錄音,去河邊找鬼植榕。 笑死再沧,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的尊残。 我是一名探鬼主播炒瘸,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼寝衫!你這毒婦竟也來了顷扩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤竞端,失蹤者是張志新(化名)和其女友劉穎屎即,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體事富,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年乘陪,在試婚紗的時候發(fā)現(xiàn)自己被綠了统台。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡啡邑,死狀恐怖贱勃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤贵扰,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布仇穗,位于F島的核電站,受9級特大地震影響戚绕,放射性物質(zhì)發(fā)生泄漏纹坐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一舞丛、第九天 我趴在偏房一處隱蔽的房頂上張望耘子。 院中可真熱鬧,春花似錦球切、人聲如沸谷誓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捍歪。三九已至,卻和暖如春鸵钝,著一層夾襖步出監(jiān)牢的瞬間费封,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工蒋伦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留弓摘,地道東北人。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓痕届,卻偏偏與公主長得像韧献,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子研叫,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,527評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫锤窑、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,033評論 4 62
  • 馮濤是一個小職員嚷炉,平日里渊啰,喜歡用工作填滿自己的生活,即使不工作的時候申屹,他也不喜歡特別復(fù)雜的東西绘证,總是看一些淺薄的偵...
    光白閱讀 199評論 0 0
  • 當我們在微信上熱火朝天地與海南的同學峡捡、云南的三姨氯檐、英國的表妹聊天的時候德谅,我們就是在屯子里的食雜店蘑险,交流的對象就是左...
    杜俗人閱讀 672評論 0 0
  • 剛注冊腐泻,試一試
    巴蜀客閱讀 197評論 1 0