Open link to Facebook page from iOS app

前端 未结 8 1122
孤独总比滥情好
孤独总比滥情好 2020-11-30 18:29

I want to redirect user to my App\'s Facebook page, so I have the following code:

[[UIApplication sharedApplication] openURL:
    [NSURL URLWithString: @\"ht         


        
8条回答
  •  伪装坚强ぢ
    2020-11-30 18:55

    I was happy to find skladek's answer, so here's my contribution: Swift + other social networks.

    I found that I needed 3 forward slashes for twitter, and only 2 for Facebook and Google+, I didn't investigate more than that…

    // Go to https://graph.facebook.com/PageName to get your page id
    func openFacebookPage() {
        let facebookURL = NSURL(string: "fb://profile?id=PageName")!
        if UIApplication.sharedApplication().canOpenURL(facebookURL) {
            UIApplication.sharedApplication().openURL(facebookURL)
        } else {
            UIApplication.sharedApplication().openURL(NSURL(string: "https://www.facebook.com/PageName")!)
        }
    }
    
    func openTwitterProfile() {
        let twitterURL = NSURL(string: "twitter:///user?screen_name=USERNAME")!
        if UIApplication.sharedApplication().canOpenURL(twitterURL) {
            UIApplication.sharedApplication().openURL(twitterURL)
        } else {
            UIApplication.sharedApplication().openURL(NSURL(string: "https://twitter.com/USERNAME")!)
        }
    }
    
    func openGooglePlusPage() {
        let googlePlusURL = NSURL(string: "gplus://plus.google.com/u/0/PageId")!
        if UIApplication.sharedApplication().canOpenURL(googlePlusURL) {
            UIApplication.sharedApplication().openURL(googlePlusURL)
        } else {
            UIApplication.sharedApplication().openURL(NSURL(string: "https://plus.google.com/PageId")!)
        }
    }
    

    An attempt at refactoring:

    struct SocialNetworkUrl {
        let scheme: String
        let page: String
    
        func openPage() {
            let schemeUrl = NSURL(string: scheme)!
            if UIApplication.sharedApplication().canOpenURL(schemeUrl) {
                UIApplication.sharedApplication().openURL(schemeUrl)
            } else {
                UIApplication.sharedApplication().openURL(NSURL(string: page)!)
            } 
        }
    }
    
    enum SocialNetwork {
        case Facebook, GooglePlus, Twitter, Instagram
        func url() -> SocialNetworkUrl {
            switch self {
            case .Facebook: return SocialNetworkUrl(scheme: "fb://profile/PageId", page: "https://www.facebook.com/PageName")
            case .Twitter: return SocialNetworkUrl(scheme: "twitter:///user?screen_name=USERNAME", page: "https://twitter.com/USERNAME")
            case .GooglePlus: return SocialNetworkUrl(scheme: "gplus://plus.google.com/u/0/PageId", page: "https://plus.google.com/PageId")
            case .Instagram: return SocialNetworkUrl(scheme: "instagram://user?username=USERNAME", page:"https://www.instagram.com/USERNAME")
            }
        }
        func openPage() {
            self.url().openPage()
        }
    }
    

    Now you can call:

    SocialNetwork.Twitter.openPage()
    

提交回复
热议问题