Branch.io Facebook 中的链接 iOS 应用程序
Branch.io links in Facebook iOS App
当我尝试在 Facebook 应用程序中打开 link 时,Branch.io 找不到我的应用程序。它总是重定向到 App Store,即使我们的应用程序已经安装在设备上。我已经阅读 https://blog.branch.io/deep-linking-from-facebook-in-2017/ 并实施了 Deepviews,但即使从那里我也无法进入该应用程序。它仍然会打开 App Store。
我假设问题出在我们的 Branch.io 配置中,但我找不到它。
备注:
- 我已经实现了通用链接并且它们工作正常(除了 Facebook 的这个问题)。
- 当我在 Facebook 应用程序中按 "Open in Safari" 时,它也能正常工作。
- Deepview 在已安装应用程序时始终显示 "Get the app" 而不是 "Open app"。
这就是我创建 link:
的方式
- (BranchUniversalObject *)generateBranchObjectFor:(MBMediaObject *)object {
NSArray<NSString *> *pathComponents = [object.shareLink pathComponents];
NSString *uid = [[pathComponents subarrayWithRange:NSMakeRange(pathComponents.count-2, 2)] componentsJoinedByString:@"/"];
BranchUniversalObject *branchObject = [[BranchUniversalObject alloc] initWithCanonicalIdentifier:uid];
branchObject.title = object.name;
branchObject.imageUrl = object.imageURL.absoluteString;
if ([object isKindOfClass:MBSong.class]) {
branchObject.contentDescription = ((MBSong *)object).artistName;
} else if ([object isKindOfClass:MBAlbum.class]) {
branchObject.contentDescription = ((MBAlbum *)object).artist.name;
}
return branchObject;
}
- (BranchLinkProperties *)generateBranchLinkPropertiesForObject:(MBMediaObject *)object channel:(NSString *)channel {
BranchLinkProperties *properties = [BranchLinkProperties new];
properties.feature = @"sharing";
properties.channel = channel;
[properties addControlParam:@"$deeplink_path" withValue:[[object.shareLink stringByReplacingOccurrencesOfString:@"http://" withString:@""] stringByReplacingOccurrencesOfString:@"https://" withString:@""]];
return properties;
}
NSString *shortURLString = [[self generateBranchObjectFor:object] getShortUrlWithLinkProperties:[self generateBranchLinkPropertiesForObject:object channel:@"twitter"]];
这是我们的 link 设置:
Amruta 来自 Branch.io 此处:
由于 Apple 方面的限制,当用户在网络浏览器(即 Safari)上点击通用 link 时,如果 link 与当前网页具有相同的域它不使用 Universal linking 打开应用程序,而是在 Safari 中打开 link。您可以阅读有关此行为的更多信息 here.
为了克服这个限制,Branch为Deepview按钮后面的link使用了不同的域,这样访问的域就不同于当前网页。 Deepview 按钮后面的 link 使用格式为 '-alternate.app.link' 的域。
请确保您已在授权文件中为您的应用程序添加 -alternate.app.link 域。您可以查看提供有关如何添加域的信息的文档 here.
Branch.io 找不到我的应用程序。它总是重定向到 App Store,即使我们的应用程序已经安装在设备上。我已经阅读 https://blog.branch.io/deep-linking-from-facebook-in-2017/ 并实施了 Deepviews,但即使从那里我也无法进入该应用程序。它仍然会打开 App Store。
我假设问题出在我们的 Branch.io 配置中,但我找不到它。
备注:
- 我已经实现了通用链接并且它们工作正常(除了 Facebook 的这个问题)。
- 当我在 Facebook 应用程序中按 "Open in Safari" 时,它也能正常工作。
- Deepview 在已安装应用程序时始终显示 "Get the app" 而不是 "Open app"。
这就是我创建 link:
的方式- (BranchUniversalObject *)generateBranchObjectFor:(MBMediaObject *)object {
NSArray<NSString *> *pathComponents = [object.shareLink pathComponents];
NSString *uid = [[pathComponents subarrayWithRange:NSMakeRange(pathComponents.count-2, 2)] componentsJoinedByString:@"/"];
BranchUniversalObject *branchObject = [[BranchUniversalObject alloc] initWithCanonicalIdentifier:uid];
branchObject.title = object.name;
branchObject.imageUrl = object.imageURL.absoluteString;
if ([object isKindOfClass:MBSong.class]) {
branchObject.contentDescription = ((MBSong *)object).artistName;
} else if ([object isKindOfClass:MBAlbum.class]) {
branchObject.contentDescription = ((MBAlbum *)object).artist.name;
}
return branchObject;
}
- (BranchLinkProperties *)generateBranchLinkPropertiesForObject:(MBMediaObject *)object channel:(NSString *)channel {
BranchLinkProperties *properties = [BranchLinkProperties new];
properties.feature = @"sharing";
properties.channel = channel;
[properties addControlParam:@"$deeplink_path" withValue:[[object.shareLink stringByReplacingOccurrencesOfString:@"http://" withString:@""] stringByReplacingOccurrencesOfString:@"https://" withString:@""]];
return properties;
}
NSString *shortURLString = [[self generateBranchObjectFor:object] getShortUrlWithLinkProperties:[self generateBranchLinkPropertiesForObject:object channel:@"twitter"]];
这是我们的 link 设置:
Amruta 来自 Branch.io 此处:
由于 Apple 方面的限制,当用户在网络浏览器(即 Safari)上点击通用 link 时,如果 link 与当前网页具有相同的域它不使用 Universal linking 打开应用程序,而是在 Safari 中打开 link。您可以阅读有关此行为的更多信息 here.
为了克服这个限制,Branch为Deepview按钮后面的link使用了不同的域,这样访问的域就不同于当前网页。 Deepview 按钮后面的 link 使用格式为 '-alternate.app.link' 的域。
请确保您已在授权文件中为您的应用程序添加 -alternate.app.link 域。您可以查看提供有关如何添加域的信息的文档 here.