ios - 应用程序委托(delegate)中用于 Facebook 和 Twitter 的 OpenURL?

标签 ios swift facebook twitter twitter-fabric

我正在使用 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/

相关文章:

javascript - 即时编辑 Facebook Like-Box Css?

iphone - 增强的 iOS 条码扫描器库?

ios - 快速的本地通知声音不起作用

ios - 以编程方式禁用键盘声音

ios - 将模态视图放在 View 上并使背景变灰

swift - 如何剪切长文本直到它适合 NSTextView 并在剪切文本的末尾添加 ...?

ios - 如何知道在 IBAction 上单击了哪个 IndexPath.row,以及如何从触发中排除特定按钮

objective-c - iOS:内存警告使按钮消失

Facebook 多好友选择器 + 新的 javascript API = 坏了?

iphone - 在 iphone 中创建类似 facebook 菜单导航的 View