0

我正在尝试使用以下代码直接发布到 facebook/twitter 而不用 UIViewController 提示用户:

// 1. Create the service
var facebook = new FacebookService {
    ClientId = "<App ID from developers.facebook.com/apps>",
    RedirectUrl = new System.Uri ("<Redirect URL from developers.facebook.com/apps>")
};

// 2. Create an item to share
var item = new Item { Text = "Xamarin.Social is the bomb.com." };
item.Links.Add (new Uri ("http://github.com/xamarin/xamarin.social"));

// 3. Present the UI on iOS
var shareController = facebook.GetShareUI (item, result => {
    // result lets you know if the user shared the item or canceled
    DismissViewController (true, null);
});
PresentViewController (shareController, true, null);

但是 Xamarin.Social 说明说:

 As an alternative to presenting the share UI, you can share items directly using the **ShareItemAsync** method of the service.

https://github.com/xamarin/Xamarin.Social

我找不到任何关于如何使用它的示例或明确的教程。有人可以帮我吗?

4

1 回答 1

3

如果您查看Xamarin.Social的来源,无论如何都会在内部使用ShareItemAsync来执行请求。GetShareUI 只是 ShareItemAsync 的一个包装器。

ShareViewController的源代码(获取 UI),您可以看到他们如何使用 ShareItemAsync 来执行请求。这是给你的片段。

try {
    service.ShareItemAsync (item, account).ContinueWith (shareTask => {
        StopSharing ();  
        .
        .
        .
        .
        .
}, TaskScheduler.FromCurrentSynchronizationContext ());
            }

因此,您需要做的就是创建项目,获取帐户并调用服务上的方法,就像这样

var item = new Item { Text = "Xamarin.Social is the bomb.com." };
item.Links.Add (new Uri ("http://github.com/xamarin/xamarin.social"));

var account = facebook.GetAccountsAsync().FirstOrDefault();

facebook.ShareItemAsync(item, account);
于 2013-08-17T08:29:58.727 回答