TL;DR: 如果想傳遞自定參數,請把它放在「深層連結」(Deep Link) 的欄位裡,不要放在短網址後面。
忘了是誰提到,能不能在 Firebase dynamic link (FDL) 產生的短網址後面加上自定參數,類似 facebook 的 fbclid ,來傳遞我們想要的值呢?
一開始研究的是兩位 iOS 工程師們。找到的文章除了 Firebase 官方文件以外,也找到 medium 上有篇針對 Android 和官方文件的 use case 測試的「Firebase Dynamic Link案例研究 」。
試了一下發現 iOS 還真的可以抓到。
於是就很歡樂的實作了這個功能…
實作完了要開始測試。
有 iPhone 的同仁說某個 FDL 分享結果不如預期。
除錯了半天,發現似乎是 line 在傳遞的過程中不知道為什麼把 FDL 短網址還原成長網址格式(?)
然後我們把自定參數放在短網址後面,所以就再見了。
但還是要傳參數啊,怎麼辦呢,就先決定把有問題的分享連結的 FDL 裡的深層連結設定,調成有帶自訂參數的網址試試。
其實這已經是第一個警告了,但沒能讀懂。
在研究的同時我也用 Postman 去玩了一下 FDL 的 REST API 。一開始亂丟參數進去試,然後就得到一個 Google 警告回傳說,欸這不是我們要的值,檢查一下參數設定。
{
"error": {
"code": 400,
"message": "Invalid JSON payload received. Unknown name \"myCustomKey\" at 'dynamic_link_info': Cannot find field.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"field": "dynamic_link_info",
"description": "Invalid JSON payload received. Unknown name \"myCustomKey\" at 'dynamic_link_info': Cannot find field."
}
]
}
]
}
}
然後移除了我亂丟的參數,就成功建立了一組 FDL 啦。
接著發現,用 REST API 建的 FDL 在後台看不到報表,甚至也看不到連結任何設定,只能用 REST API 拉報表?這什麼情況…
總之這條路也斷了。
這算是第二個警告了,但也沒能讀懂。
換到 Android 工程師實作。經過了千辛萬苦之後,包版測試,發現某些功能一直不如預期。
和 PM 一起東測西測,抓到一個行為兩隻手機有點不一樣,深入研究了半天,再請 Android 工程師接線把 log 全開,我實機操作,看到底接到什麼。
看到 log 心先涼了一半。
短網址後面的自訂參數~掉~光~光~~~
立刻拿某組 FDL 來編輯,把深層連結手動加上我們要的參數格式,再重新接線。
Magic~~~
當場反省自己為什麼沒能在一開始時就用保守的做法放進 deep link 就好,讓團隊多繞了一個大遠路…
留言列表