Firebase DynamicLinks
Firebase DynamicLinks是用于用戶分享鏈接,改鏈接內含有應用所需參數(shù),可通過鏈接跳轉對應應用或網(wǎng)頁地址,實現(xiàn)指定頁面的分享跳轉。
集成準備
1.Firebase添加項目
官方文檔地址:https://firebase.google.com/docs/android/setup?authuser=0
具體實現(xiàn)可參考Firebase消息推送文檔,需注意的是在注冊應用的時候,通常只需配SHA-1簽名密鑰,如果需要應用鏈接的分享,需要配置SHA-256

進入應用設置界面入口

SHA-256添加頁面
2.鏈接地址配置

動態(tài)鏈接地址入口

短鏈接網(wǎng)址設置

配置對應短鏈接即別名

設置鏈接行為

鏈接標記界面
代碼實現(xiàn)
1.根據(jù)參數(shù)生成長鏈接
//編輯跳轉app所需的Uri參數(shù)
deepLinkBuilder.append(DEEP_LINK_HOST)
.append(XMConstant.FIREBASE_TYPE).append("=").append(XMConstant.FIREBASE_LIVE)
.append("&").append(XMConstant.FIREBASE_DEEPLINK_CHANNELID).append("=").append(channelId)
.append("&").append(XMConstant.FIREBASE_SCHEDULEID).append("=").append(scheduleId)
.append("&").append(XMConstant.FIREBASE_FROM_ID).append("=").append(fromId)
.append("&").append(XMConstant.FIREBASE_SIGN).append("=").append(sign);
//編輯跳轉網(wǎng)頁所需的Uri參數(shù)
baseUrlBuilder.append(BASE_OPEN_LIVE_URL)
.append("&").append(XMConstant.FIREBASE_CHANNELID).append("=").append(channelId)
.append("&").append(XMConstant.FIREBASE_SCHEDULEID).append("=").append(scheduleId)
.append("&").append(XMConstant.FIREBASE_FROM_ID).append("=").append(fromId)
.append("&").append(XMConstant.FIREBASE_SIGN).append("=").append(sign)
//指定鏈接來源
.append("&").append(XMConstant.FIREBASE_FROM).append("=app");
//生成長鏈接地址
DynamicLink liveDynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLink(Uri.parse(deepLinkBuilder.toString()))
.setDomainUriPrefix(DEEP_LINK_DOMAIN)
.setNavigationInfoParameters(new DynamicLink.NavigationInfoParameters.Builder()
.setForcedRedirectEnabled(true)
.build())
.setAndroidParameters(new DynamicLink.AndroidParameters.Builder()
.setFallbackUrl(Uri.parse(baseUrlBuilder.toString()))
.build())
.setIosParameters(new DynamicLink.IosParameters.Builder(ISO_PACKAGE)
.setFallbackUrl(Uri.parse(baseUrlBuilder.toString()))
.build())
.setSocialMetaTagParameters(new DynamicLink.SocialMetaTagParameters.Builder()
.setTitle(title)
.setImageUrl(Uri.parse(icon))
.setDescription(description)
.build())
.buildDynamicLink();
//該鏈接即為生成的長鏈接地址,可在此處進行校驗處理
String longDeeplink = liveDynamicLink.getUri().toString()+Uri.encode("&ofl="+ baseUrlBuilder.toString());
2.縮短長鏈接
FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLongLink(Uri.parse(longUrl))
.buildShortDynamicLink()
.addOnCompleteListener(activity, new OnCompleteListener<ShortDynamicLink>() {
@Override
public void onComplete(@NonNull Task<ShortDynamicLink> task) {
//檢測短鏈接的生成是否成功,成功回調短鏈接,否則為長鏈接
if (task.isSuccessful()) {
Uri link = task.getResult().getShortLink();
listener.onSuccess(link.toString());
} else {
listener.onSuccess(longUrl);
}
}
});
功能校驗
通過分享到Facebook、Twitter、WhatsApp等三方軟件,拿到對應的分享內容鏈接之后,使用Google瀏覽器打開,如應用未安裝跳轉指定網(wǎng)頁地址,則功能測試成功,如應用已安裝,則需檢測是否能成功跳轉指定的應用頁面。