2015-06-09 5 views
19

überschrieben Das ist mein Code wird die hohe Punktzahl auf Facebook zu teilen:Android - Facebook Aktie Inhalt wird

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); 

Und das funktioniert gut, wenn die URL einige zufällige Website (wie developers.facebook.com), aber wenn Es handelt sich um einen Link zu Google Play. Der Inhaltstitel und die Inhaltsbeschreibung werden überschrieben. Der Titel wird mit dem Titel aus dem Play Store überschrieben und die Inhaltsbeschreibung ist leer.

Wie kann man also mit der App im Play Store verlinken, aber den benutzerdefinierten Titel und die Beschreibung behalten? Ich weiß, es ist möglich, weil ich andere apps es tut gesehen habe:

enter image description here

+0

Ich glaube, dass dieses Verhalten beim Teilen von App-Store-Links beabsichtigt ist, siehe [Bericht] (https://developers.facebook.com/bugs/1543859162514546/). – ifaour

+0

Wie überschreibe ich dieses Verhalten? Ich habe andere Apps gesehen, die das tun. – TimSim

+0

Vielleicht [App Links] (https://developers.facebook.com/docs/applinks) könnte für Sie nützlich sein. – ifaour

Antwort

4

Duplizieren von this Post mit einem Link zu einem Facebook bug report wo Facebook das Verhalten bestätigt und erklärt, dass sie wahrscheinlich nicht beheben.

Wie für andere Anwendungen dieses Verhalten bekommen, habe ich eine Vermutung.

Wenn Sie Anwendung sind hat eine Website, die Sie eine Dummy-Seite hinzugefügt werden können, dann könnte tun Sie folgendes: für Ihre ShareDialog verwenden

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

Dann setContentUrl(Uri.parse("https://example.com/android") wo die URL einer Seite öffnet, die den HTML dient über.

Dadurch werden Nutzer beim Öffnen der Seite automatisch zu Ihrer Google Play Store-Seite weitergeleitet. Die Zurück-Taste sollte immer noch so funktionieren, als ob sie direkt zur Google Play Store-Seite geleitet würde.

Ich habe versucht, nur eine HTTP-Redirect statt tatsächlich die Seite hosten, aber das hat nicht funktioniert.


EDIT: Sie AppLinks Meta-Tags im Seitenkopf enthalten können die Umleitung auf Android-Geräte zu überspringen.

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

This zeigt Ihnen, wie Sie mit dem Link in Ihrer App umgehen.

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

Wenn die App dann nicht auf dem Gerät installiert wird, die Sie im Google Play Store (wenn auch durch eine sehr hässliche Popup gesendete die im normalen ShareDialog fließen, wenn ein Play Store Link verwendet nicht passieren wird direkt).

Zusätzlich Facebook will create and host the page for you wenn Sie das wollen. Das Beispiel HTML oben stammt von einer ihrer gehosteten Seiten (beachten Sie die unterschiedliche Implementierung der Weiterleitung).

+0

Dies funktioniert nicht. Die Android-Facebook-App versucht lediglich, die URL in ihrem eigenen Browser zu öffnen, und es öffnet sich eine Seite, auf der steht, dass Google Play diesen Browser nicht unterstützt. Es sollte die App-Seite in der Google Play App öffnen, tut dies aber nicht. – TimSim

3

Sie können Deeplinking-Methode verwenden, um das zu erreichen. Alles, was Sie tun müssen, ist eine HTML-Seite erstellen und alle Shop-Links (Google Play, App Store) in diesem ein Meta-Tag und versuchen, diesen Link zu teilen. Sie können erreichen, was Sie wollen, und auch wenn der Benutzer die App auf Android öffnet, wird er/sie zu Google Play weitergeleitet und wenn der Benutzer die App auf iOS öffnet, wird er/sie zur App Store Seite weitergeleitet.