我正在开发一款运行在iOS,Android和Web上的游戏。在Web客户端上,我可以设置一个供稿对话框,让用户在朋友的时间轴上发帖:
使用此代码实现了这一目标:
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
中的params
字段是默认情况下对话框选择朋友的Feed的原因。
我想在iOS和Android客户端上做同样的事情,但我找不到使用SDK 4.x实现此目的的方法。
文档说:
“使用分享按钮,您可以让人们分享内容 Facebook时间表,朋友的时间表或小组。“
虽然对话框允许玩家在朋友的时间轴上分享,但在将对话框呈现给用户之前似乎没有办法选择此选项。
查看FBSDKShareDialog
和FBSDKShareLinkContent
的接口,我没有像JS中那样指定“to”的方法。移动SDK中是否缺少此功能?
答案 0 :(得分:0)
因此,经过对Facebook SDK代码的一些挖掘后,我找到了一种方法来做我想要的,但是它使用了未记录和弃用的代码...(根据代码注释,这是在那里支持Unity)。所以它并不是完全推荐的,但为了防止有人帮忙,这里就是:
在iOS上,FBSDKShareLinkContent
中有一个隐藏属性,可让您为" feed"中的共享对话框传递自由格式参数字典。模式。通常这是不可访问的,但宣布扩展是公开所需的全部内容。使用"to"
键指定朋友ID使对话框在Web上工作。
@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
在Android上,有一个名为ShareFeedContent
的未记录的类可以用来代替普通的ShareLinkContent
,并且包含一个toId
字段,这是我需要的。
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
使用这些可能不是一个好主意,但它们确实有效。希望其他人有更清洁的选择。