2

我很难让 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());
    } 
}
4

1 回答 1

0

抱歉这么久才回复。

您正在使用对象 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(如果您想要用户拥有的对象,这可能是不可能的)。

于 2015-02-11T18:56:06.003 回答