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 就好,讓團隊多繞了一個大遠路…


    repeat :D 發表在 痞客邦 留言(0) 人氣()