自小程序的第一個版本上線快一個月了,從買粉絲搜索使用一直沒什么問題,所以以為挺穩定了,沒想到昨晚我們的運營在推文中加上了小程序的鏈接,想從推文直接跳轉至小程序首頁的時候,卻發現跳過去了之后頁面加載異常了,表現為一片空白,死活都加載不出來數據。
由于推文中配的小程序鏈接只能跳轉線上的小程序,并不能配置體驗版本的小程序,所以只能靠推理解決這個bug。
接下來我開始了修復之旅...
首先我看了一下相關的函數,寫得很簡單
從入口函數來看,分了三種情況:
1:從城市列表跳轉過來的時候會攜帶一些參數,例如城市id等。這種情況會先進入initData() 函數進行一些初始化。
2:如果頁面有緩存數據,也會先進入initData() 函數。
3:如果是從買粉絲直接進入小程序,并且沒有過緩存,我把這種情況當作最初始的一種情況,這時候就正常地走獲取數據流程,即直接調用getData() 函數獲取數據。
1、首先根據頁面加載的時候沒有出現loading,那么程序并沒有執行 getData() 函數。所以肯定不是一開始就執行 this.getData()。
2、清除緩存,移除小程序,再次進入小程序,仍然出現一片空白,那么知道并不是因為緩存問題,所以也排除第二種情況。
3、至于第一種情況,我是比較認同的。因為當初我只是想到從買粉絲直接打開小程序的場景,卻忽略了從買粉絲推文(甚至別的渠道)進入的場景。據我之前開發買粉絲的經驗推測,從推文進入的時候買粉絲極大可能會在url上攜帶一些亂七八糟的參數,這些參數正符合第一種情況的條件,進而進入了this.initData(options)。
4、來看data.flag 的值,如果等于0,那么調用this.getData(),已知this.getData()并沒有被執行,所以data.flag 不等于0;如果 this.showFail = true 的話,那么會顯示一個失敗頁,但頁面是空白的,并沒出現失敗頁,由此可知data.flag 并不等于1 或者 2。接下來沒有路可走了,所以會出現空白頁,這就說得過去了。
5、之所以會進入initData()函數,上面提過是別的買粉絲自動加入的參數導致的,這些參數并不是我需要的(比如很關鍵的一個參數flag),但是卻陰差陽錯地成為了進入initData()函數的充分條件,此時flag 應該是undefined。所以形式就很明朗了,只要把進入的條件寫得嚴謹一些如:
盡量從源頭制止,并把initData函數改造如下,保證有一條通路可走:
到這里,我覺得應該是沒問題的了。然后提交審核啦,審核很快就通過了,然后把小程序發布上去,然后開始驗證,再次從當初那篇推文進入小程序...發現Ok啦,出來數據啦
哈哈 謹記錄一下這個坑!
買粉絲買粉絲是開發者或商家在買粉絲公眾平臺上申請的應用賬號,該帳號與QQ賬號互通,平臺上實現和特定群體的文字、圖片、語音、視頻的全方位溝通、互動 ,形成了一種主流的線上線下買粉絲互動營銷方式。
2019年12月26日,買粉絲買粉絲文章無法打開,點擊文章鏈接后顯示空白。隨后,買粉絲團隊道歉,買粉絲后臺大部分功能已經修復。
第六步:把小程序路徑那一框的內容刪除,粘貼上你在第四步復制的小程序頁面路徑,
如果顯示小程序未發布的話,那可能小程序還沒有上線,那就登錄買粉絲公眾平臺——小程序賬號,在開發設置里把小程序發布上線即可
可以嘗試以下步驟進行操作:
1、進入小程序——取得小程序ID。首先,如果買粉絲想要關聯一個小程序,小程序必須是完整發布的狀態,且你需要這個小程序自動生成的ID。在你登錄小程序后,點擊設置讀取ID。
2、進入買粉絲——小程序管理
3、進入小程序管理——點擊“添加”選項
4、進入頁面點擊“關聯小程序”選項
5、掃描二維碼——買粉絲平臺管理員掃描驗證
6、輸入要搜索的APP ID ,這里注意是小程序ID,是自動生成ID,填寫注冊手機是無法識別的。
7、發送關聯邀請。可以看到在搜索了ID后,我們找到了“測試田666”這個小程序,點擊“發送關聯申請”。
注意:這里有兩個選項是自動勾選的,一個是展示在買粉絲資料頁內,一個是給已關注的買粉絲用戶發送通知。展示在買粉絲資料頁是可以隨時更改的,而發送通知正如一個流量入口,可以讓所有用戶關注這個小程序,但一經發出是無法撤回的!
8、點擊發送關聯邀請。點擊關聯邀請后,等待小程序管理員在24小時內應答。
9、小程序管理員同意綁定——完成關聯。關聯后的小程序將可以出現在買粉絲各業務場景中。
最近做了一個需求在買粉絲網頁推送的模板消息,連接跳轉到關聯小程序,遇到總是跳轉到首頁的問題。說一下里面的坑
后端是PHP進 行消息發送 官方發送數據例子如下:
最開始 為了構造一個json數據格式,
第一步:我是先把 數據構造成一個多維數組 $arr,
第二步:$json_data = json_en買粉絲de($arr),然后再 $json = urlde買粉絲de($json_data);
第三步:再然后 就是 通過 curl_init 進行發送了,這里不再詳述。
接下來有個坑,發送不成功,錯誤信息 如下
{ “err買粉絲de”:40165,“errmsg”:"invalid weapp pagepath}
百度下,很快有了答案,說官方文檔有誤,把 pagepath 改為 path 即可,我試了下,果然可以,消息推送正常,開心壞了!
奇怪的事情發生了,點擊推送消息后沒有跳轉到小程序指定頁面,一直是首頁!
然后百度搜索各種答案,有說 路徑參數名,改為 page(試了下居然可以),有的說 為 pagepath(這不是剛跳出來的坑嗎?為啥別人居然可以成功發送?)
經過各種測試終于發現問題所在,第二步有問題!json_en買粉絲de() 把原來數組中的路徑 斜杠轉義了! 'pages/auth/auth?id=6' 變成了 'pages\/auth\/auth?id=6' 難怪找不到路徑!
后來看了下手冊,有防止 json_en買粉絲de() 轉義 斜杠的參數
JSON_UNESCAPED_SLASHES (不轉義斜杠,對應的數字 64)
然后把第二步 改為 $json_data = json_en買粉絲de($arr, JSON_UNESCAPED_SLASHES )
還得把 頁面參數由 path 改為 pagepath (不改會報錯!)
再發送消息就可以正常接收并跳轉到指定小程序頁面啦!下面是我的構造的正確的多維數組格式