我很难让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());
}
}
答案 0 :(得分:0)
很抱歉,回复需要很长时间。
您正在使用Object API创建用户拥有的OG对象。如果您希望该OG对象启用App Link,则该对象上的URL(myObject.setUrl)必须是来自App Link Hosting对象的canonical_url(意味着您需要通过App Link Hosting API创建它)。您无法使用自己的网址,因为它无法正常合并。这是Object API的限制。从这里,您有两个选择:
使用App Link Hosting API https://developers.facebook.com/docs/applinks/hosting-api创建App Link网址,并将其用作OG对象的url属性。
由于您有一个网站,请使用网站上的网址来托管您的OG对象,而不是使用对象API(如果您需要用户拥有的对象,这可能无法实现)。