0

私はiOS、Android、およびWebで動作するゲームに取り組んでいます。私は聞かせてフィードダイアログを設定することができ、Webクライアント上で友人のタイムライン上でのユーザーのポストです:paramsFacebook iOS/Android SDKの共有リンクを友だちのフィードに追加

var params = 
{ 
    name: name, 
    link: link, 
    picture: picture, 
    caption: caption, 
    description: description, 
    actions: actions, 
    properties: properties 
}; 

params.method = 'feed'; 
params.to = friend_id; 

FB.ui(params, function(response){ 
    ... 
}); 

toフィールド:このコードを使用することによって達成されます

Share on friend-s feed

デフォルトで友だちのフィードを選択するのはダイアログです。

iOSとAndroidクライアントで同じことをやりたいのですが、SDK 4.xでこれを実現する方法が見つかりません。

ドキュメントは言う:「あなたは、人々が友人のタイムラインにまたはグループで、彼らの Facebookのタイムラインにコンテンツを共有することができます共有ボタンと」

ダイアログプレイヤーは彼らの友人のタイムライン上で共有することができますことは事実ですが、ユーザーにダイアログを提示する前に、このオプションを選択する方法があるようには思えません。

FBSDKShareDialogFBSDKShareLinkContentのインターフェースを見ると、私はJSのように "to"を指定する方法がありません。この機能はモバイルSDKから欠落していますか?

+0

あなたは正しいですか?あなたは友人を事前に選ぶことはできません – WizKid

答えて

0

Facebook SDKのコードを掘り下げた後、私が望むことをする方法を見つけましたが、文書化されていないコードと非難されたコードを使用しています...(コードのコメントによれば、Unityをサポートしています)。

iOSでは、FBSDKShareLinkContentに隠れたプロパティがあります。このプロパティを使用すると、共有ダイアログの「フィード」モードで自由形式のパラメータ辞書を渡すことができます。通常これにはアクセスできませんが、拡張機能を宣言するだけで公開することができます。 "to"キーを使用してフレンドIDを指定すると、Web上でのようにダイアログが機能します。 Androidの上で

@interface FBSDKShareLinkContent() 
@property (nonatomic, copy) NSDictionary* feedParameters; 
@end 

... 

FBSDKShareLinkContent* content = [[FBSDKShareLinkContent alloc] init]; 
content.contentTitle = title; 
content.contentDescription = description; 
content.contentURL = linkURL; 
content.imageURL = imageURL; 
content.feedParameters = @{@"to" : friendId}; // Setting hidden property 

FBSDKShareDialog* shareDialog = [[FBSDKShareDialog alloc] init]; 
shareDialog.mode = FBSDKShareDialogModeFeedWeb; // Use feed mode 

、代わりに通常のShareLinkContentの使用と私は必要なものであるtoIdフィールドが含まれていることができShareFeedContentと呼ばれる文書化されていないクラスがあります。

import com.facebook.share.internal.ShareFeedContent; // Import undocumented class 

ShareFeedContent content = new ShareFeedContent.Builder() 
    .setLinkName(title) 
    .setLinkDescription(description) 
    .setLink(linkURL) 
    .setPicture(imageURL) 
    .setToId(friendId) 
    .build(); 

ShareDialog shareDialog = new ShareDialog(activity); 
shareDialog.show(content, ShareDialog.Mode.FEED); // Use feed mode 

これらを使用することはおそらくお勧めできませんが、間違いなく動作します。うまくいえば、他の誰かがよりクリーンな選択肢を持っていることを望みます

関連する問題