1、Wiki定义:
Deferred deep linking is one aspect of mobile deep linking. It describes the principle of deep linking into an app that is not yet installed. In this case, deep linking will be "deferred" until the application will be installed by the user. This implies that clicking (or otherwise invoking) the deep link causes:
- An app store to open (Google Play/IOS or Windows App Store depending on the user's device) to enable the user to install the app
- Once the app is installed, the link is invoked with its original URL and parameters so that the newly installed app can handle the invocation.
A common use case is to drive installs; linking to functionality in a not-yet-installed app provides the user with an incentive to install it.
Deferred deep linking allows mobile developers and mobile marketers to deliver a seamlessly and automated user experience, whether the app was previously installed or not, improving conversion rates and user retention.
延迟深度链接是[移动深层链接]的一个方面。它描述了深度链接到尚未安装的应用程序的原理。在这种情况下,深度链接将“延迟”,直到用户安装应用程序。这意味着单击(或以其他方式调用)深层链接会导致:
1.要打开的应用商店(Google Play / IOS或Windows App Store,具体取决于用户的设备),以便用户安装应用
2.安装应用程序后,将使用其原始URL和参数调用链接,以便新安装的应用程序可以处理调用。
一个常见的用例是驱动安装;链接到尚未安装的应用程序中的功能为用户提供了安装它的动力。
延迟深度链接允许移动开发人员和移动营销人员提供无缝和自动化的用户体验,无论该应用程序之前是否已安装,都可提高转换率和用户保留率。
2、通过AppsFlyer实现Deferred-Deep-Linking:
OneLink™ 深度链接指南 - OneLink Deep Linking Guide
延迟深度链接 - 获取转化数据 - Deferred-Deep-Linking-Getting-the-Conversion-Data
文档写的很好,有一些英文的部分,但是阅读难度不大,图文并茂!
3、回调方法:
-(void)onConversionDataReceived:(NSDictionary*) installData {
//Handle Conversion Data (Deferred Deep Link)
NSNumber* firstLaunch = [installData objectForKey:@"is_first_launch"];
if (firstLaunch.boolValue) {
NSString *url = [installData objectForKey:@"af_dp"];
NSString *realUrl = [url adjUrlDecode];
NSURL *djUrl = [NSURL URLWithString:realUrl];
if (djUrl != nil) {
[AppCall handleOpenURL: djUrl sourceApplication:nil];
}
}
}
-(void)onConversionDataRequestFailure:(NSError *) error {
NSLog(@"%@",error);
}
- (void) onAppOpenAttribution:(NSDictionary*) attributionData {
//Handle Deep Link
NSString *link = [attributionData objectForKey:@"link"];
NSURL *linkUrl = [NSURL URLWithString:link];
NSDictionary *dict = [DJAppCall dictionaryWithQuery: linkUrl.query];
NSString *url = [dict objectForKey:@"af_dp"];
NSString *realUrl = [url adjUrlDecode];
NSURL *djUrl = [NSURL URLWithString:realUrl];
if (djUrl != nil) {
[AppCall handleOpenURL: djUrl sourceApplication:nil];
}
}
- (void) onAppOpenAttributionFailure:(NSError *)error {
NSLog(@"%@",error);
}
4、 值得注意的一些地方:
- 注意URL的转义
- 测试注意:虽然点击OneLink会跳转到AppStore,但是你还是可以用开发环境的证书打包代替从AppStore下载,几个回调方法还是能正常回调。
- 这个功能还是存在一定随机性会失败,多尝试几次也未尝不可。
- -(void)onConversionDataReceived:(NSDictionary*) installData {} : 这个方法在每次有后台唤醒都会调用,所以注意 "is_first_launch" 的值来判断是否是第一次安装很重要。