如果iPhone上安装了原生Facebook应用程序。如何从我的应用程序打开Facebook链接到本机Facebook应用程序。在Safari打开的情况下,链接与:
相同谢谢。
答案 0 :(得分:133)
以下是Facebook应用程序使用的一些方案,源链接上还有更多方案:
NSURL *url = [NSURL URLWithString:@"fb://profile/<id>"];
[[UIApplication sharedApplication] openURL:url];
fb://个人资料 - 打开Facebook应用程序到用户的个人资料
fb:// friends - 打开Facebook应用到好友列表
fb://通知 - 打开Facebook应用程序到通知列表(注意:此URL似乎存在错误。通知页面打开。但是,无法导航到Facebook中的任何其他位置应用)
fb:// feed - 将Facebook应用打开到新闻Feed
fb:// events - 打开Facebook应用程序到活动页面
fb:// requests - 打开Facebook应用程序到请求列表
fb:// notes - 打开Facebook应用程序到Notes页面
fb://相册 - 打开Facebook相册到相册列表
如果在打开此网址之前,您想要检查用户是否熟悉Facebook应用,您可以执行以下操作(如下面的其他答案中所述):
if ([[UIApplication sharedApplication] canOpenURL:nsurl]){
[[UIApplication sharedApplication] openURL:nsurl];
}
else {
//Open the url as usual
}
答案 1 :(得分:27)
只需使用https://graph.facebook.com/(your_username或网页名称)即可获取您的网页ID,并在您看到所有扣留和身份证后
在您的IOS应用程序使用后:
NSURL *url = [NSURL URLWithString:@"fb://profile/[your ID]"];
[[UIApplication sharedApplication] openURL:url];
答案 2 :(得分:26)
要添加yonix的评论作为答案,旧的fb://page/…
网址将不再有效。显然,它被fb://profile/…
取代,即使页面不是个人资料。
答案 3 :(得分:10)
我在MonoTouch中用以下方法做到了这一点,我确信纯粹的基于Obj-C的方法不会太差异。我在一个有时更改URL的类中使用了这个,这就是为什么我没有把它放在if / elseif语句中。
NSString *myUrls = @"fb://profile/100000369031300|http://www.facebook.com/ytn3rd";
NSArray *urls = [myUrls componentsSeparatedByString:@"|"];
for (NSString *url in urls){
NSURL *nsurl = [NSURL URLWithString:url];
if ([[UIApplication sharedApplication] canOpenURL:nsurl]){
[[UIApplication sharedApplication] openURL:nsurl];
break;
}
}
在您的应用更改为Safari / Facebook之前,并不总是调用中断。我假设你的程序会停在那里并在你回来时调用它。
答案 4 :(得分:8)
我知道问题已经过时了,但为了支持上述答案,我想分享我的工作代码。 只需将这两种方法添加到任何类中。代码检查是否安装了facebook app,如果没有安装,则在浏览器中打开url。如果在尝试查找profileId时发生任何错误,页面将在浏览器中打开。只需将url(例如,http://www.facebook.com/AlibabaUS)传递给openUrl:它就会完成所有魔法。希望它可以帮到某人!。
注意:UrlUtils是拥有该代码的类,您可能需要将其更改为其他内容以满足您的需求。
+(void) openUrlInBrowser:(NSString *) url
{
if (url.length > 0) {
NSURL *linkUrl = [NSURL URLWithString:url];
[[UIApplication sharedApplication] openURL:linkUrl];
}
}
+(void) openUrl:(NSString *) urlString
{
//check if facebook app exists
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fb://"]]) {
// Facebook app installed
NSArray *tokens = [urlString componentsSeparatedByString:@"/"];
NSString *profileName = [tokens lastObject];
//call graph api
NSURL *apiUrl = [NSURL URLWithString:[NSString stringWithFormat:@"https://graph.facebook.com/%@",profileName]];
NSData *apiResponse = [NSData dataWithContentsOfURL:apiUrl];
NSError *error = nil;
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:apiResponse options:NSJSONReadingMutableContainers error:&error];
//check for parse error
if (error == nil) {
NSString *profileId = [jsonDict objectForKey:@"id"];
if (profileId.length > 0) {//make sure id key is actually available
NSURL *fbUrl = [NSURL URLWithString:[NSString stringWithFormat:@"fb://profile/%@",profileId]];
[[UIApplication sharedApplication] openURL:fbUrl];
}
else{
[UrlUtils openUrlInBrowser:urlString];
}
}
else{//parse error occured
[UrlUtils openUrlInBrowser:urlString];
}
}
else{//facebook app not installed
[UrlUtils openUrlInBrowser:urlString];
}
}
答案 5 :(得分:4)
swift 3
if let url = URL(string: "fb://profile/<id>") {
if #available(iOS 10, *) {
UIApplication.shared.open(url, options: [:],completionHandler: { (success) in
print("Open fb://profile/<id>: \(success)")
})
} else {
let success = UIApplication.shared.openURL(url)
print("Open fb://profile/<id>: \(success)")
}
}
答案 6 :(得分:1)
如果Facebook应用程序已登录,则在执行以下代码时将打开该页面。如果Facebook应用程序在执行代码时未登录,则用户将被重定向到Facebook应用程序进行登录,然后连接后Facebook不会重定向到页面!
NSURL *fbNativeAppURL = [NSURL URLWithString:@"fb://page/yourPageIDHere"] [[UIApplication sharedApplication] openURL:fbNativeAppURL]
答案 7 :(得分:1)
今天刚刚验证了这一点,但如果你想开一个Facebook 页面,你可以使用“fb:// page / {Page ID}”
您可以在页面底部附近的“关于”部分找到页面ID。
具体到我的用例,在Xamarin.Forms中,您可以使用此代码段在应用程序中打开(如果可用),否则在浏览器中。
Device.OpenUri(new Uri("fb://page/{id}"));
答案 8 :(得分:1)
以前的方法 fb://profile/[ID]
不起作用。
试试fb://profile?id=[ID]
用法示例:
// Open Profile or page
// To open in Application
if UIApplication.shared.canOpenURL(URL(string: "fb://profile?id=vikramchaudhary.ios")!) {
UIApplication.shared.open(URL(string: "fb://profile?id=vikramchaudhary.ios")!, options: [:], completionHandler: nil)
} else {
// To open in safari
UIApplication.shared.open(URL(string: "https://facebook.com/vikramchaudhary.ios/")!, options: [:], completionHandler: nil)
}
答案 9 :(得分:0)
这将在Safari中打开URL:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.facebook.com/comments.php?href=http://wombeta.jiffysoftware.com/ViewWOMPrint.aspx?WPID=317"]];
对于iphone,如果使用以fb://
开头的网址安装,则可以启动Facebook应用可在此处找到更多信息:http://iphonedevtools.com/?p=302也在此处:http://wiki.akosma.com/IPhone_URL_Schemes#Facebook
从上述网站被盗:
fb://profile – Open Facebook app to the user’s profile
fb://friends – Open Facebook app to the friends list
fb://notifications – Open Facebook app to the notifications list (NOTE: there appears to be a bug with this URL. The Notifications page opens. However, it’s not possible to navigate to anywhere else in the Facebook app)
fb://feed – Open Facebook app to the News Feed
fb://events – Open Facebook app to the Events page
fb://requests – Open Facebook app to the Requests list
fb://notes - Open Facebook app to the Notes page
fb://albums – Open Facebook app to Photo Albums list
启动上述网址:
NSURL *theURL = [NSURL URLWithString:@"fb://<insert function here>"];
[[UIApplication sharedApplication] openURL:theURL];
答案 10 :(得分:0)
2020年答案
只需打开URL。 Facebook自动注册深层链接。
let url = URL(string:"https://www.facebook.com/TheGoodLordAbove")!
UIApplication.shared.open(url,completionHandler:nil)
如果已安装,它将在facebook应用程序中打开,否则将在默认浏览器中打开