Facebook Share Dialog Deep链接iOS

时间:2015-02-20 17:11:26

标签: ios facebook-ios-sdk deep-linking facebook-share

我相信我在iOS应用中设置了所有适当的深层链接。用户可以使用Facebook应用程序登录我们的应用程序,如果有,可以登录我的应用程序,如果没有,则可以登录到我们的应用程序,并在完成后正确地重定向回我们的应用程序。

当用户点击“#34”时,我很难尝试实现相同的重定向 - 通过应用名称共享"在原生iOS应用程序中。我想遵循预期的流程,如果他们没有安装应用程序,它会将用户带到App Store,如果他们这样做,则打开我的应用程序。现在,无论是否安装了应用,用户都会被定向到应用商店。

我的fb应用程序的设置(大多数值因显而易见的原因而被混淆)如下:

enter image description here enter image description here

注意 在上面的图片中,大多数空白/看似空的值实际上都是正确的,只是从图像中删除了隐私,这使得它们显得,但他们不是。

我大约在6个月前左右开始使用之前的应用程序,但我的理解是Facebook已经切换到应用程序链接,尽管我已经貌似阅读了我可以在这个主题上找到的每一份文件,我不能为我的生活现在让它发挥作用。

我开始怀疑这不是我们需要在网络方面配置的东西。现在共享的网页是否需要嵌入元标记以将用户引导到适当的位置,即页面是否需要嵌入我的应用程序的URL方案 - app-name://,或者什么?

从Facebook iOS应用程序的共享重定向是否需要做一些特殊的事情,这与从Facebook iOS应用程序的登录重定向不同?

1 个答案:

答案 0 :(得分:1)

Facebook文档非常不完整..我不得不从这个网站上删除一些信息:http://applinks.org/documentation/

在我的应用中,我通过" example.com/share.php"等链接分享所有故事。我的share.php文件中的代码如下:

<?php
    require 'Mobile_Detect.php'; //you need to download this
    $detect = new Mobile_Detect;

    //if user is accessing the "shared history" from the facebook website
    //it should be redirected to the website, not allowing him to browse this
    //page, as it is empty.
    //
    //the regex avoids the redirect for facebook crawler
    if (!preg_match('%facebookexternalhit/1.*%si', $_SERVER["HTTP_USER_AGENT"])) {
        if (!$detect->isiOS() && !$detect->isAndroidOS()) {
            header("Location: http://www.example.com/");
            die();
        }
    }

?><!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>App Share Page</title>

    <!-- This disables the intermediate web view in mobile, jumping straigt to the app -->
    <meta property="al:web:should_fallback" content="false">

    <!-- Android -->
    <meta property="al:android:url" content="customschemaurl://fromShare">
    <meta property="al:android:package" content="com.mycompany.myappbundleid">
    <meta property="al:android:app_name" content="App name">

    <!-- iOS -->
    <meta property="al:ios:url" content="customschemaurl://fromShare" />
    <meta property="al:ios:app_store_id" content="0000000" /> <!-- itunes connect app id, not bundle id -->
    <meta property="al:ios:app_name" content="App name" />

    <!-- OG Share (url shared) -->
    <meta property="og:title" content="some share title"/>
    <meta property="og:url" content="http://www.example.com/share.php"/>
    <meta property="og:image" content="http://www.example.com/byb-logo.png"/>
    <meta property="og:site_name" content="App name"/>
    <meta property="og:description"
          content="some description text"/>

</head>
<body>
</body>
</html>

这个简单的网页可以检测到它是Android还是iphone并启动应用程序,如果它是webbrowser(非移动设备),它会重定向到您的网站(如果您有像我这样的多平台应用程序,可能会下载页面)并允许Facebook抓取工具(非移动设备)访问所需信息以更正应用程序。

希望有所帮助......