如果您开发了一款出色的原生应用,还搭建了一个优秀的移动网站,但您发现原生应用中的转化率比移动网站上的更高。遇到这种难题时,该怎么办?在这种情况下,让移动网站用户转为下载您的应用可能会提升您的业绩。虽然让用户“转移阵地”可能是一项颇具挑战性的任务,但借助 Dynamic Links 就易如反掌了。 您只需编写极少量的代码就能添加如下功能:用户点击您移动网站上的某个链接后,就会转到您应用中的相应页面。即使他们必须先转到 App Store 或 Google Play 商店安装您的应用,系统仍会确保将他们转到该页面。
主要优势
- 将移动网站用户转化为原生应用用户,同时为他们提供尽可能顺畅的过渡体验。
- 用户在启动您的应用时,可以看到与他们刚刚在您的网站上所查看的页面相同的内容。
- 只需要完成非常少的集成工作。
下面介绍如何添加这项功能!
准备工作
使应用的内容可深层链接
将移动网站用户转化为原生应用用户的关键是:确保用户在打开应用时所看到的内容与他们在网站上看到的内容相同。因此,在您开始将移动网站用户转到您的应用之前,该应用应能够接收指向内容的深层链接。
如果您已实现了 iOS 通用链接或 Android App Links,那么您可能已经完成了这项工作。但如果还没有的话,则需要在您的应用中添加相关逻辑,使其可以接收您的网站网址,然后在应用内向用户显示相应的内容。
设置 Firebase 和 Dynamic Links SDK
建立一个新的 Firebase 项目,并将 Dynamic Links SDK 安装到您的应用中。(iOS、Android、C++、Unity)。安装 Dynamic Links SDK 后,Firebase 就能在用户安装应用后传递有关动态链接的数据。如果没有此 SDK,则应用无法将安装后的用户与安装前的点击关联在一起。
在您的网页中添加“在应用中打开”链接
现在可以设置链接,让用户从您的网站转移到您的原生应用了。如果您的用户还没有安装应用,您也不用担心,动态链接可以为您解决这一问题。
为您网站的每个页面动态生成一个动态链接。
由于您已将自己的内容设计为支持深层链接,因此 link
参数只需要采用该链接所对应页面的网址即可。
此类链接可能如下所示:
<a href="https://example.page.link/?link=https://www.example.com/content?item%3D1234&apn=com.example.android&ibi=com.example.ios">Open this page in our app!</a>
当用户在其设备上打开上述链接时,如果尚未安装 apn
参数(在 Android 上)或 ibi
参数(在 iOS 上)所指定的应用,则用户会被引导至 Play 商店或 App Store 安装该应用。然后,该应用会打开,系统会将 link
参数中指定的网址传递给该应用。
在您的应用中打开链接的内容
接下来,您需要接收传递给您的应用的链接,并打开所链接的内容,利用 Dynamic Links SDK 可以轻松做到这一点:
iOS
在 iOS 上,您可通过实现 application:continueUserActivity:restorationHandler:
方法来接收动态链接。在恢复处理程序中,您可以调用 handleUniversalLink:completion:
来获取动态链接。如果已经有一个动态链接传递至您的应用,您可以从 FIRDynamicLink
的 url
属性中获取该链接。例如:
Objective-C
[[FIRDynamicLinks dynamicLinks]
handleUniversalLink:userActivity.webpageURL
completion:^(FIRDynamicLink * _Nullable dynamicLink,
NSError * _Nullable error) {
NSString *link = dynamicLink.url;
}];
Swift
FIRDynamicLinks.dynamicLinks()?.handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in
let link = dynamiclink.url
}
此外,您必须在 application:openURL:options:
方法中调用 dynamicLinkFromCustomSchemeURL:
,才能收到作为自定义方案网址传递至您的应用的动态链接。例如:
Objective-C
FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url];
if (dynamicLink) {
NSString *link = dynamicLink.url;
// ...
return YES;
}
Swift
let dynamicLink = FIRDynamicLinks.dynamicLinks()?.dynamicLinkFromCustomSchemeURL(url)
if let dynamicLink = dynamicLink {
let link = dynamiclink.url
// ...
return true
}
现在您已经获得了 link
参数的值,可以向用户显示链接的内容了。
Android
在 Android 上,使用 getDynamicLink()
方法从动态链接中获取数据:
Kotlin+KTX
Firebase.dynamicLinks .getDynamicLink(intent) .addOnCompleteListener { task -> if (!task.isSuccessful) { // Handle error // ... } val invite = FirebaseAppInvite.getInvitation(task.result) if (invite != null) { // Handle invite // ... } }
Java
FirebaseDynamicLinks.getInstance() .getDynamicLink(getIntent()) .addOnCompleteListener(new OnCompleteListener<PendingDynamicLinkData>() { @Override public void onComplete(@NonNull Task<PendingDynamicLinkData> task) { if (!task.isSuccessful()) { // Handle error // ... } FirebaseAppInvite invite = FirebaseAppInvite.getInvitation(task.getResult()); if (invite != null) { // Handle invite // ... } } });
现在您已经获得了 link
参数的值,可以向用户显示链接的内容了。