Facebook iOS 应用程序中的 Branch.io 链接

Posted

技术标签:

【中文标题】Facebook iOS 应用程序中的 Branch.io 链接【英文标题】:Branch.io links in Facebook iOS App 【发布时间】:2017-08-15 09:07:54 【问题描述】:

当我尝试在 Facebook 应用中打开链接时,Branch.io 找不到我的应用。它总是重定向到 App Store,即使我们的应用程序已经安装在设备上。我已经阅读了https://blog.branch.io/deep-linking-from-facebook-in-2017/ 并实现了 Deepviews,但即使从那里我也无法进入该应用程序。它仍然会打开 App Store。

我认为问题出在我们的 Branch.io 配置中,但我找不到。

注意事项:

    我已经实现了通用链接,并且它们工作正常(Facebook 的这个问题除外)。 当我在 Facebook 应用程序中按“在 Safari 中打开”时,它也可以正常工作。 当已安装应用程序时,Deepview 始终显示“获取应用程序”而不是“打开应用程序”。

这就是我创建链接的方式:

- (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"]];

这是我们的链接设置:

【问题讨论】:

我也有同样的问题。深度链接适用于 Safari,但不适用于 Facebook。我关注了与您相同的博客文章,但无法弄清楚为什么它不起作用。我尝试编辑 deepview html 以将属性“al:web:should_fallback”添加为 false,但它仍然无法正常工作。我现在很难过。 Branch 的文档真的很混乱。 【参考方案1】:

来自Branch.io这里的Amruta:

由于Apple方面的限制,当用户在网络浏览器(即Safari)上点击通用链接时,如果该链接与当前网页具有相同的域,则它不会使用通用链接来打开应用程序而是在 Safari 中打开链接。您可以阅读有关此行为的更多信息here。

为克服此限制,Branch 为 Deepview 按钮后面的链接使用不同的域,以便访问的域与当前网页不同。 Deepview 按钮后面的链接使用格式为“-alternate.app.link”的域。

请确保您已在权利文件中为您的应用添加了 -alternate.app.link 域。您可以查看提供有关如何添加域here 的信息的文档。

【讨论】:

非常感谢阿姆鲁塔!这样做确实会打开应用程序而不是 App Store。如果将其添加到文档中以使人们更容易发现它,那就太好了。我现在遇到的另一个问题是,deepview 中的按钮总是说“获取应用程序”,即使现在它在安装时直接进入应用程序。是否缺少任何内容以使按钮改为显示“打开应用程序”? @RafaelAlencar 非常感谢您的反馈。我已经更新了我们网站上的文档,应该会在一两天内发布。 @RafaelAlencar 默认 Deepview CTA 配置为在未安装应用程序时显示“获取应用程序”,在安装应用程序时显示“打开应用程序”。但是,Deepview CTA 按钮取决于 Branch 是否第一次看到应用打开或安装。因此,如果用户从 App Store Branch 有机地安装该应用程序,将无法将 Deepview CTA 从“获取”更改为“打开”。要将 Deepview CTA 从“获取”更改为“打开”,用户需要单击 Deepview CTA 按钮并直接深层链接到您的应用。我们的后端系统更新可能需要大约 30 分钟。 我明白了。感谢Amruta的解释! @AmrutaDeshmukh 你能帮我检查一下我的问题***.com/q/45930696/1115791 吗?

以上是关于Facebook iOS 应用程序中的 Branch.io 链接的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 fb:// 从网页链接到 iOS 原生 Facebook 应用程序中的 Facebook STATUS

Facebook iOS 应用程序中的 Branch.io 链接

登录并再次授权时如何在iOS SDK中的Facebook应用程序中获取Facebook帐户的更改?

ios 示例中的 Facebook 视频聊天

如何将 Facebook 页面中的视频显示到我的 IOS 应用程序?

Facebook 通过 ios 中的社交框架登录