【小程序踩坑系列1】 掃普通二維碼調起小程序bug:碼地址傳遞錯誤,傳爲歷史地址


做者介紹:

陳小二,現新美大高級前端渣渣、弱勢羣體(小程序開發者)抱團取暖組織成員之一。平時喜歡玩遊戲(最近迷戀吃雞)+養貓。寫這段廢話的目的實際上是:咱們正在等待第三位愛好寫做的小夥伴加入咱們~而後一塊兒灌水~前端


問題:

用戶掃碼二維碼A,小程序onload中傳遞q參數爲二維碼地址B,且該二維碼地址爲用戶歷史使用二維碼地址。git

緣由:

微信側掃碼啓動參數錯亂。github

用戶使用微信「掃一掃」掃描二維碼A,微信經過系統事件啓動小程序,用戶使用完以後,
將小程序退到後臺,一段時間後小程序被系統回收。用戶再次掃描二維碼B,
微信仍然經過系統事件啓動小程序,可是實際上,系統先發出A二維碼的啓動事件,
再發出B二維碼的啓動事件,致使小程序啓動參數錯亂。
理論上,用戶第二次掃碼的時候,系統不該該連續發出兩次事件。
複製代碼

解決方案:

方案1 :

微信側目前上線了熱修復方案,解決該問題,保證經過系統事件啓動時傳遞正確的碼地址。但目前該方案僅能覆蓋最近兩個版本,即6.5.20之後的,覆蓋人羣不會很高,活躍用戶的七八成因此對於剩下的2-3成用戶,仍然存在該問題。小程序

方案2 :

方案2會解決剩下的2-3成活躍用戶。微信小程序

目前掃碼啓動小程序的場景,微信會將原始URL經過參數的方式傳給小程序,key爲"q"。 後臺改動上線後,會多出一個key爲"scancode_time"的UNIX時間戳參數,是用戶掃碼的時間。服務器

用戶掃碼時間和執行onlaod的時間相對好比果在30s之內,能夠認爲傳遞給咱們的碼地址是30s之內剛掃過的碼,能夠認爲傳遞的非歷史地址。從這個邏輯出發,作了如下校驗:微信

ps:  第二次將掃碼時間與服務器端時間再次進行校驗的目的:避免部分用戶手動更改手機時間
或者本地手機時間差距較大,致使問題出現,故再進行一次服務端時間校驗。
複製代碼

另外: 歡迎加入咱們:前端工程師

弱勢羣體(開發小程序的前端工程師們)共享bug組織post

也歡迎和咱們一塊兒貢獻倉庫:小程序bug集合spa

詳細的能夠瞅瞅微信小程序開發者經驗分享組織成立啦~~~

相關文章
相關標籤/搜索