2015-03-31 6 views
2

У меня есть приложение с кнопкой, которая предполагает открыть страницу Facebook. Он проверяет, есть ли у пользователя установлен Facebook и должен открыть страницу в приложении. Если он не установлен, он просто открывает страницу с помощью Safari. Однако он не работает. Я подозреваю, что это что-то делать с неправильным адресом для него, если пользователь установил Facebook:Xcode быстрая ссылка на страницу facebook

ответ

10

Проблема с форматом вашего URL Facebook, так обратите внимание на формат. Я использую это расширение для открытия URL-адресов. Вы обеспечиваете его с массивом адресов в порядке, вы хотите их, чтобы попытаться открыть и пытается первой первым, и если это не удается, то идет ко второму и так далее:

extension UIApplication { 
    class func tryURL(urls: [String]) { 
     let application = UIApplication.sharedApplication() 
     for url in urls { 
      if application.canOpenURL(NSURL(string: url)!) { 
       application.openURL(NSURL(string: url)!) 
       return 
      } 
     } 
    } 
} 

И для использования :

UIApplication.tryURL([ 
      "fb://profile/116374146706", // App 
      "http://www.facebook.com/116374146706" // Website if app fails 
      ]) 

[Update] для Swift 4:

extension UIApplication { 
    class func tryURL(urls: [String]) { 
     let application = UIApplication.shared 
     for url in urls { 
      if application.canOpenURL(URL(string: url)!) { 
       application.openURL(URL(string: url)!) 
       return 
      } 
     } 
    } 
} 

И потом:

UIApplication.tryURL(urls: [ 
       "fb://profile/116374146706", // App 
       "http://www.facebook.com/116374146706" // Website if app fails 
       ]) 
+0

Я совершенно новой для этого. Как добавить расширение? Я вырезал и вставил то, что вы написали, и это вызвало внутренний сбой в Xcode. – ChallengerGuy

+0

Просто создайте новый файл импорта быстрых файлов и UIKit, а затем вставьте расширение. Расширения выходят за рамки любого класса. – Ian

+0

Большое спасибо! Мне просто нужно выяснить, как получить свой идентификатор страницы Facebook. – ChallengerGuy

2

Swift 3

extension UIApplication { 
    class func tryURL(urls: [String]) { 
      let application = UIApplication.shared 
      for url in urls { 
       if application.canOpenURL(URL(string: url)!) { 
        //application.openURL(URL(string: url)!) 
        application.open(URL(string: url)!, options: [:], completionHandler: nil) 
        return 
       } 
      } 
     } 
} 

И для использования:

UIApplication.tryURL(urls: [ 
      "fb://profile/116374146706", // App 
      "http://www.facebook.com/116374146706" // Website if app fails 
      ]) 
Смежные вопросы