如何在Xamarin中从我的iOS应用程序打开Facebook / Twitter应用程序?

6

我正在使用Xamarin开发一款iOS应用,使用C#语言。

我有一个“联系人” UIViewController ,其中包含一些按钮,包括Facebook和Twitter。

我需要从我的应用程序打开特定的Facebook页面和Twitter资料。

最好的方法是什么?

5个回答

10

试试这个:

Device.OpenUri(new Uri("fb://page/page_id"));
Device.OpenUri(new Uri("twitter://user?user_id=userid"));

要获取Facebook页面的page_id,请右键单击该页面并选择查看源代码页,然后找到相应的page_id。同样地,在Twitter上找到userid


这正是我所需要的!谢谢 - pasluc74669
如果我在手机上安装了Facebook或Twitter应用程序,它会要求在应用程序中打开吗? - Josue Martinez
这是应用程序特定的URI方案,当通过意图传递时,如果已安装,则重定向到该特定应用程序。 - Himanshu Dwivedi
如果设备没有那些应用程序,你该怎么打开浏览器呢? - MetaSnarf
1
Device.OpenUri(new Uri("http://www.yourpageurl.com/")); 这是打开浏览器的方法。在这里,您需要传递完整的URL,而不是使用像“fb://”或“twitter://”这样的意图。意图用于定位应用程序而不是浏览器。 - Himanshu Dwivedi

4
除了接受的答案外,以下是我发现的在外部应用程序中打开链接的方法。
在浏览器中打开链接:

Device.OpenUri(new Uri("http://example.in/index.html"));

在Facebook中打开群组:

Device.OpenUri(new Uri("fb://group/groupname"));

在Facebook中打开页面:

Device.OpenUri(new Uri("fb://page/page_id"));

在Instagram中打开用户:

Device.OpenUri(new Uri("instagram://user?username=yourUserName"));

在Twitter中打开用户:

Device.OpenUri(new Uri("twitter://userName?user_id=userId"));

在邮件应用程序中打开邮件:

Device.OpenUri(new Uri("mailto:example@gmail.com"));


请问,我如何在Xamarin.Android上做同样的事情? - Shadi Fayed
是否可能在没有“用户名”和“页面ID”的情况下打开应用程序? - Aswathy K R

4

如果您使用Xamarin.Forms,您也可以使用这些方法:

await Launcher.OpenAsync(new Uri("your-link");

await Launcher.TryOpenAsync(new Uri("your-link");

await Launcher.CanOpenAsync(new Uri("your-link");

await Browser.OpenAsync("your-link");

据我所记,当你使用以下方式时,浏览器会尝试使用默认应用程序启动URL(如果已安装在手机上):
BrowserLaunchMode.SystemPreferred

1

1
它对你还有效吗?我已经尝试过了:我的Facebook应用程序已经打开,但没有在预期的页面上... - Gold.strike

1
以下是我在2022年成功运行的代码,在iOS和Android都可用。如果Twitter/Facebook应用程序已安装,它将在其中打开;否则将在浏览器中打开。
private async void OnTwitterClicked(object sender, EventArgs e)
{
    if(!await Launcher.TryOpenAsync("twitter://user?user_id=762836470772097024"))
    {
        await Browser.OpenAsync("https://twitter.com/RingotanApp");
    }
}

private async void OnFacebookClicked(object sender, EventArgs e)
{
    if (!await Launcher.TryOpenAsync("fb://facewebmodal/f?href=https://www.facebook.com/RingotanApp"))
    {
        await Browser.OpenAsync("https://www.facebook.com/RingotanApp");
    }
}

在iOS中,您还需要将以下内容添加到Info.plist中。
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>twitter</string>
    <string>fb</string>
</array>

我使用这个工具找到了我的Twitter数字ID。

Facebook的另一个URI选项是"fb://page/1761091624175851",其中数字ID来自Facebook的"关于->更多信息"。然而,对我来说,这个URI有点不稳定 - 它会先在应用程序中正常打开页面,然后切换到facewebmodal使用的Web模态框。我建议不要使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接