问题
I have a link to my facebook, on my website, which opens in the phone's browser.
I would like it to open in the facebook app by default, if the app is installed.
I tried to put this code but it does not work. Opens the facebook page always and only via safari and not through the facebook app. If you can help me please.
@IBAction func supporto(_ sender: UIBarButtonItem) {
let Username = "831831923611308"
let appURL = NSURL(string: "fb://profile/\(Username)")!
let webURL = NSURL(string: "https://facebook.com/\(Username)")!
let application = UIApplication.shared
if application.canOpenURL(appURL as URL) {
if #available(iOS 10.0, *) {
application.open(appURL as URL)
} else {
// Fallback on earlier versions
}
} else {
if #available(iOS 10.0, *) {
application.open(webURL as URL)
} else {
// Fallback on earlier versions
}
}
}
回答1:
I can confirm that the code you are using does work. I placed it in a new project, installed it on my phone, and set the Info.plist
values as follows:
My code is as follows:
There are a few reasons that your code may not have worked.
- You may need to clean and rebuild your project to make sure that your changes in
Info.plist
load. - You may need to verify that you added the
LSApplicationQueriesSchemes
toInfo.plist
and that that is the plist that the application is set up to load. - You must run this on a real device as your simulator should not have Facebook installed.
- Verify that Facebook is installed and up-to-date.
- Make sure that you are running the most up-to-date version of Xcode and iOS.
- If all else fails, delete the app and rebuild and reinstall it.
You can check that your Info.plist
is correctly loading the Queries Schemes by going to the Project Editor's Info tab and looking to make sure that LSApplicationQueriesSchemes
is there with the options specified:
回答2:
If you call the “canOpenURL” method on a URL that is not in your whitelist, it will return “NO”, even if there is an app installed that has registered to handle this scheme. A “This app is not allowed to query for scheme xxx” syslog entry will appear.
If you call the “openURL” method on a URL that is not in your whitelist, it will fail silently. A “This app is not allowed to query for scheme xxx” syslog entry will appear.
So you have to put fb
in LSApplicationQueriesSchemes
in your info.plist
来源:https://stackoverflow.com/questions/43742856/facebook-not-open-page-in-app-swift-3