Facebook AppLinks不会将URI传递给Android应用

时间:2015-01-30 18:55:53

标签: android facebook applinks

我很难让AppLinks为我的Android应用程序工作,我会打电话给MyApp。我已经按照Facebook Developers网站上的文档将App Links集成到现有内容中。 Facebook调试工具(https://developers.facebook.com/tools/debug/og/object/)显示我的网页被正确删除,并显示我的3个meta标签的applinks:

<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" />

我有Open Graph Stories,我使用Share Dialog发布到Facebook,它共享我刚刚通过Facebook调试工具发布的URL。这些Open Graph Stories已经过Facebook审核/批准,并在新闻提要中显示。点击后,在浏览器的Facebook中,他们会转到与故事相关联的URL。点击后,在Facebook for Android中,他们只打开MyApp的默认活动(MainActivity),而不是处理URI方案的活动(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());
    } 
}

1 个答案:

答案 0 :(得分:0)

很抱歉,回复需要很长时间。

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

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

  2. 由于您有一个网站,请使用网站上的网址来托管您的OG对象,而不是使用对象API(如果您需要用户拥有的对象,这可能无法实现)。