我正在使用 Facebook SDK 和 Twitter SDK 进行登录和注册。
但它们都不是通过一种常用方法打开 URL。我为 Facebook 编写了如下代码:
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool
{
if(url.scheme == "fb1651015905222312")
{
return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
}
return true
}
这很好用,对于 Twitter,我必须评论上面的方法并且必须这样写:
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
if Twitter.sharedInstance().application(app, openURL:url, options: options) {
return true
}
return true
}
这仅适用于 Twitter。
问题是我需要编写一个通用方法来在 appDelegate
中打开他们的 URL。那么我该如何克服呢?
注意:我们不能在应用委托(delegate)中同时编写这两个方法。
最佳答案
最后我找到了这个问题的解决方案。
swift 3
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
if Twitter.sharedInstance().application(app, open:url, options: options) {
return true
}
let appId = SDKSettings.appId
if url.scheme != nil && url.scheme!.hasPrefix("fb\(appId)") && url.host == "authorize" { // facebook
return SDKApplicationDelegate.shared.application(app, open: url, options: options)
}
return false
}
对于 Swift < 3
这是允许我为 Facebook 和 Twitter 编写 url 的方法。
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
if Twitter.sharedInstance().application(app, openURL:url, options: options) {
return true
}
let sourceApplication: String? = options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String
return FBSDKApplicationDelegate.sharedInstance().application(app, openURL: url, sourceApplication: sourceApplication, annotation: nil)
}
感谢所有试图回答我的问题的人。
谢谢。
关于ios - 应用程序委托(delegate)中用于 Facebook 和 Twitter 的 OpenURL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38300519/