在iOS上通过原生Facebook应用打开Facebook链接

时间:2012-05-02 14:58:46

标签: iphone ios xcode facebook

如果iPhone上安装了原生Facebook应用程序。如何从我的应用程序打开Facebook链接到本机Facebook应用程序。在Safari打开的情况下,链接与:

相同
  

http://www.facebook.com/AlibabaUS

谢谢。

11 个答案:

答案 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
}

来源

http://wiki.akosma.com/IPhone_URL_Schemes#Facebook

答案 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应用程序中打开,否则将在默认浏览器中打开