Firebase DynamicLinks
Firebase DynamicLinks是用于用戶分享鏈接褐墅,改鏈接內(nèi)含有應(yīng)用所需參數(shù)冠句,可通過鏈接跳轉(zhuǎn)對應(yīng)應(yīng)用或網(wǎng)頁地址厢钧,實(shí)現(xiàn)指定頁面的分享跳轉(zhuǎn)皿哨。
集成準(zhǔn)備
1.Firebase添加項(xiàng)目
官方文檔地址:https://firebase.google.com/docs/android/setup?authuser=0
具體實(shí)現(xiàn)可參考Firebase消息推送文檔长酗,需注意的是在注冊應(yīng)用的時(shí)候铜涉,通常只需配SHA-1簽名密鑰智玻,如果需要應(yīng)用鏈接的分享,需要配置SHA-256
2.鏈接地址配置
代碼實(shí)現(xiàn)
1.根據(jù)參數(shù)生成長鏈接
//編輯跳轉(zhuǎn)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);
//編輯跳轉(zhuǎn)網(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();
//該鏈接即為生成的長鏈接地址骄噪,可在此處進(jìn)行校驗(yàn)處理
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) {
//檢測短鏈接的生成是否成功尚困,成功回調(diào)短鏈接,否則為長鏈接
if (task.isSuccessful()) {
Uri link = task.getResult().getShortLink();
listener.onSuccess(link.toString());
} else {
listener.onSuccess(longUrl);
}
}
});
功能校驗(yàn)
通過分享到Facebook链蕊、Twitter事甜、WhatsApp等三方軟件谬泌,拿到對應(yīng)的分享內(nèi)容鏈接之后,使用Google瀏覽器打開逻谦,如應(yīng)用未安裝跳轉(zhuǎn)指定網(wǎng)頁地址掌实,則功能測試成功,如應(yīng)用已安裝邦马,則需檢測是否能成功跳轉(zhuǎn)指定的應(yīng)用頁面贱鼻。