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