Android – Facebook共享内容被覆盖

这是我的代码分享Facebook上的高分:

ShareLinkContent content = new ShareLinkContent.Builder() .setImageUrl(Uri.parse("http://www.example.com/myicon.png")) .setContentTitle("I scored "+numPoints+" points!") .setContentUrl(Uri.parse("https://play.google.com/store/apps/details?id=com.my.package")) .setContentDescription("Get the game free on Google Play and beat my score.") .build(); ShareDialog shareDialog = new ShareDialog(this); shareDialog.show(content); 

如果URL是一些随机的网站(如developers.facebook.com),但是当它是Google Play的链接时,内容标题和内容描述会被覆盖 – 标题被Play商店中的标题和内容描述覆盖是空白的。

那么如何链接到Play商店的应用程序,但保留自定义标题和描述? 我知道这是可能的,因为我见过其他的应用程序:

在这里输入图像说明

重复这篇文章的链接到Facebook的错误报告 ,其中Facebook确认的行为,并指出,他们可能不会解决它。

至于其他应用程序如何获得这种行为,我有一个猜测。

如果您的应用程序有一个网站,您可以添加一个虚拟页面,然后您可以执行以下操作:

 <html> <head> <script type="text/javascript"> window.location.replace('https://play.google.com/store/apps/details?id=com.example.client'); </script> </head> <body></body> </html> 

然后使用setContentUrl(Uri.parse("https://example.com/android")为您的ShareDialog打开一个提供上述HTML的页面。

这会在用户打开该页面时自动将其发送到您的Google Play商店页面。 后退button仍然可以正常工作,就好像他们也直接进入Google Play商店页面一样。

我试着只是使用HTTPredirect,而不是实际上主办页面,但没有工作。


编辑:您可以在页眉中包含AppLinks元标记以跳过Android设备上的redirect。

 <html> <head><title>App Link</title> <meta property="fb:app_id" content="XXXXXXXXXXXXXXX"/> <meta property="al:ios:url" content="example://test"/> <meta property="al:ios:app_name" content="Example App"/> <meta property="al:ios:app_store_id" content="XXXXXXXXX"/> <meta property="al:android:package" content="com.example.client"/> <meta property="al:android:app_name" content="Example App"/> <meta property="al:android:url" content="example://test"/> <meta property="al:web:should_fallback" content="false"/> <meta http-equiv="refresh" content="0;url=http://play.google.com/store/apps/details?id=com.example.client"/> </head> <body>Redirecting...</body> </html> 

这将向您展示如何处理您应用中的链接。

 <activity android:name="com.example.client.MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> <intent-filter> <data android:scheme="example"/> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> </intent-filter> </activity> 

如果应用程序没有安装在设备上,那么你会被发送到谷歌Play商店(虽然通过一个非常难看的popup窗口,正常ShareDialogstream程中没有发生时,直接使用Play商店链接)。

另外,如果你愿意的话, Facebook会为你创build和托pipe这个页面 。 上面的HTML示例来自其托pipe页面之一(请注意redirect的不同实现)。

你可以使用deeplinking方法来实现这一点。 您只需要创build一个html页面,并将所有商店链接(Google Play,App Store)放在一个元标记中,然后尝试共享该链接。 你将能够实现你想要的,而且如果用户在Android上打开应用程序,他/她将被redirect到Google Play,并且如果用户在iOS上打开应用程序,他/她将被redirect到App Store页面。