【问题标题】:Facebook AppLinks doesn't pass URI to Android appFacebook AppLinks 不会将 URI 传递给 Android 应用
【发布时间】:2015-01-30 18:55:53
【问题描述】:

我很难让 AppLinks 为我的 Android 应用程序工作,我将调用 MyApp。我已按照 Facebook 开发者网站上的文档将应用程序链接集成到现有内容中。 Facebook 调试工具 (https://developers.facebook.com/tools/debug/og/object/) 显示我的网页被正确抓取,并显示我的应用链接的 3 个元标记:

<meta property="al:android:app_name" content="MyApp" />
<meta property="al:android:package" content="com.myapp.android" />
<meta property="al:android:url" content="myapp://myapphost/myapppath" />

我有使用共享对话框发布到 Facebook 的 Open Graph Stories,它共享我刚刚通过 Facebook 调试工具输入的 URL。这些 Open Graph Stories 已经过 Facebook 的审核/批准,并显示在新闻提要中。在浏览器中的 Facebook 中单击时,他们会转到与故事关联的 URL。点击时,在 Android 版 Facebook 中,它们只打开 MyApp 的默认 Activity(MainActivity),而不是处理 URI 方案的 Activity(UriLoadingActivity)。我知道 URI 方案有效,因为我在推送通知中使用它:当用户点击通知时,它会将他们带到 UriLoadingActivity:

  <activity
        android:name="com.myapp.android.activity.UriLoadingActivity"
        android:parentActivityName="com.myapp.android.activity.MainActivity" >
        <intent-filter>
            <action android:name="android.intent.action.GET_CONTENT" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />

            <data
                android:host="myapphost"
                android:scheme="myapp" />
        </intent-filter>

        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.myapp.android.activity.MainActivity" />
    </activity> 

我在 MainActivity 的 onCreate() 中登录以检查从 Facebook 传递的 Intent 数据。因此,我在 referer_app_link Bundle 中看到了 Facebook 包和应用程序名称。我还获得了 target_url,其中包含我在 Open Graph Story 中发布的网页 URL,但是,我没有看到我在网页的 Meta 标签中提供的任何 AppLink 数据。

还有其他人遇到类似问题吗?

更新:这是我用来发布到 FB 的代码。

    private void shareToFacebook(Bitmap image) {

    if (FacebookDialog.canPresentOpenGraphActionDialog(
            getApplicationContext(),
            FacebookDialog.OpenGraphActionDialogFeature.OG_ACTION_DIALOG)) {

        OpenGraphObject myObject = OpenGraphObject.Factory
                .createForPost("myapp:object");
        myObject.setProperty("title", "My Title");

        myObject.setUrl(Constants.SHARE_URL);

        myObject.setProperty("description",
                        "Just Posting to the News Feed!");

        OpenGraphAction action = GraphObject.Factory
                .create(OpenGraphAction.class);
        action.setType("myapp:action");
        action.setProperty("object", myObject);

        List<Bitmap> images = new ArrayList<Bitmap>();
        images.add(image);

        FacebookDialog shareDialog = new FacebookDialog.OpenGraphActionDialogBuilder(
                this, action, "object").setImageAttachmentsForObject(
                "object", images, false).build();
        uiHelper.trackPendingDialogCall(shareDialog.present());
    } 
}

【问题讨论】:

  • 您能否添加一些代码 sn-ps 以说明您是如何进行共享的?我怀疑 FB 应用实际上是在旧的深度链接协议(在您的应用设置中)而不是应用链接上打开您的应用,并且想看看我是否可以以某种方式重现它。
  • 我在上面发布了我的分享。我确实在 Facebook 设置中打开了深度链接切换。如果我关闭它,它只会在 Android Facebook 应用内浏览器中打开共享 URL。

标签: android facebook applinks


【解决方案1】:

抱歉这么久才回复。

您正在使用对象 API 创建用户拥有的 OG 对象。如果您希望该 OG 对象启用 App Link,则该对象上的 URL (myObject.setUrl) 必须是来自 App Link Hosting 对象的 canonical_url(这意味着您需要通过 App Link Hosting API 创建它)。您不能使用自己的 url,因为它不会正确合并。这是对象 API 的限制。从这里,您有两个选择:

  1. 使用 App Link Hosting API https://developers.facebook.com/docs/applinks/hosting-api 创建一个 App Link url,并将其用作 OG 对象的 url 属性。

  2. 由于您有一个网站,请使用网站中的 url 来托管您的 OG 对象,而不是使用对象 API(如果您想要用户拥有的对象,这可能是不可能的)。

【讨论】:

  • 感谢明的回答,作为后续行动 - 我们有一个网站,我们喜欢在浏览器中打开故事链接的页面。出于这个原因,我们希望远离使用托管 API。然而,我们也喜欢让用户发布的故事使用来自应用程序的图像来发布。有没有办法托管 OG 对象但仍然有用户生成的帖子图像?另外,您是否知道是否有任何计划更新 Object API 以允许链接到我们自己的网页但使用用户拥有的 OG 对象(就像我们正在做的那样)但应用链接可以工作?
  • 您可以将图像附加到 OG 操作而不是对象,这样您就可以使用自己的托管对象并且仍然有附件。 AFAIK 没有计划将对象 API 对象与您自己网站上的应用程序链接挂钩。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2016-10-11
  • 1970-01-01
  • 2014-07-06
  • 2015-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多