0

我正在研究在iOS,Android和Web上運行的遊戲。在Web客戶端,我可以設置Feed對話框,它可以讓一個朋友的時間表一網友發帖:Facebook iOS/Android SDK分享朋友提要的鏈接

Share on friend-s feed

這是通過使用此代碼來實現:

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's和FBSDKShareLinkContent的接口我沒有看到像我們在JS中一樣指定「to」的方法。移動SDK中是否缺少這項功能?

+0

你是對的。你不能預選朋友 – WizKid

回答

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 

這可能不是一個好主意,但它們確實有效。希望別人有一個更清潔的替代品。