前陣子facebook改版,導致我們的deeplinking的功能無法使用, 當時有想出一個暫時的解法,不過這幾天facebook再度改版,之前的做法又不能用了,這是只好花點時間來看文件找解法,最後有找到一些相關的解決方法,在這邊分享給各位
facebook deeplinking
關於facebook deeplinking 在最近一次改版之後,假設沒有按照facebook官方文件設定的話,都會出現粉絲頁無法載入的問題,所以我們只好依照官方文件實作了
<head>
...
<meta property="al:android:url" content="sharesample://story/1234">
<meta property="al:android:package" content="com.facebook.samples.sharesample">
<meta property="al:android:app_name" content="ShareSample">
...
</head>
在html的header加入上面這些meta即可,
基本上我覺得主要是看al:android:url 裡面的參數
其他兩個似乎沒什麼用處(for now)
如上範例,在app的activity裡面就必須要有對應的code
<activity android:name=".MainActivity"
android:label="@string/app_name" >
...
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="sharesample" />
</intent-filter>
</activity>
基本上這樣實作之後facebook導頁就不會有問題了.....
but....內建的browser還是不會work啊怎麼辦??
Native Browser
在google 文件的深處,有一個關於deep linking文件裡面有教我們該如何做相關的導頁動作
<a href="intent://gizmos#Intent;scheme=example;package=com.example.android;end;">example://gizmos</a>只要點擊網頁中的超連結就可以開啟監聽特定scheme的app了
but......deeplink就是希望user點擊完某特定連結之後就可以直接開啟app啊!!!
怎麼能夠讓user再點完一次連結之後再點令一次連結呢?
相信有做過實驗的人都知道使用 window.location 和 setTimeout
在內建瀏覽器是不work的,那.......該怎麼辦?
<meta http-equiv="refresh" content="5;url=intent://gizmos#Intent;scheme=example;package=com.example.android;end;/>
將上面的meta加到header裡就可以完成自動導頁的功能囉!!!