我正在使用Xamarin开发一款iOS应用,使用C#语言。
我有一个“联系人” UIViewController ,其中包含一些按钮,包括Facebook和Twitter。
我需要从我的应用程序打开特定的Facebook页面和Twitter资料。
最好的方法是什么?
我正在使用Xamarin开发一款iOS应用,使用C#语言。
我有一个“联系人” UIViewController ,其中包含一些按钮,包括Facebook和Twitter。
我需要从我的应用程序打开特定的Facebook页面和Twitter资料。
最好的方法是什么?
试试这个:
Device.OpenUri(new Uri("fb://page/page_id"));
Device.OpenUri(new Uri("twitter://user?user_id=userid"));
要获取Facebook页面的page_id
,请右键单击该页面并选择查看源代码页,然后找到相应的page_id
。同样地,在Twitter上找到userid
。
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.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");
BrowserLaunchMode.SystemPreferred
对于在我之后到达此页面的人,Device 类已被弃用。现在应该使用 Xamarin.Essentials 包中的 Launcher 类。
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");
}
}
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模态框。我建议不要使用它。