用于登录的 facebook openurl ios 9 方法 ios swift
facebook openurl for login in ios 9 method ios swift
我的应用程序中同时集成了 facebook 和 gmail,但是一旦我为 gmail 登录添加开放 url 功能,facebook 登录就会停止工作。
我的应用程序
中有用于打开 url 的代码
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
var shouldOpen :Bool = FBSDKApplicationDelegate.sharedInstance().application(application,openURL: url,sourceApplication: sourceApplication,annotation: annotation)
shouldOpen = shouldOpen ? shouldOpen : GIDSignIn.sharedInstance().handleURL(url,
sourceApplication: sourceApplication,
annotation: annotation)
return shouldOpen
}
这适用于 facebook 登录,但是当我为 ios 9 添加 gmail 的 openurl 方法时,问题发生了,即在 facebook 登录后,我们不会重定向回应用程序。在模拟器中,白屏显示在 safari 中。 ios 9
的 gmail 登录代码
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
if #available(iOS 9.0, *) {
return GIDSignIn.sharedInstance().handleURL(url,
sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String?,
annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
}
return true
}
如果我注释掉上面的代码,facebook 登录工作正常我想问题是我必须 return boolean for openurl of facebook in ios 9 .但我不知道该怎么办?
TIA
找到我的答案我需要实现打开的两种方法url像这样
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
var shouldOpen :Bool = FBSDKApplicationDelegate.sharedInstance().application(application,openURL: url,sourceApplication: sourceApplication,annotation: annotation)
shouldOpen = shouldOpen ? shouldOpen : GIDSignIn.sharedInstance().handleURL(url,
sourceApplication: sourceApplication,
annotation: annotation)
return shouldOpen
}
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
if #available(iOS 9.0, *) {
var shouldOpen :Bool = FBSDKApplicationDelegate.sharedInstance().application(
app,
openURL: url,
sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as! String,
annotation: nil)
shouldOpen = shouldOpen ? shouldOpen : GIDSignIn.sharedInstance().handleURL(url,sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String?,
annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
return shouldOpen
}
return true
}
我只需要检查 ios 9 的 facebook 打开 url 方法
编辑 swift 3.0 功能更改
private func application(application: UIApplication, openURL url: URL, sourceApplication: String?, annotation: AnyObject) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application,open: url as URL!,sourceApplication: sourceApplication,annotation: annotation)
}
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
if #available(iOS 9.0 , *){
return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: "UIApplicationOpenURLOptionsKey", annotation: nil)
}
return true
}
我尝试了@Aruk k 的回答,但对我没用
我也遇到了过去 1 month.Followed 所有步骤和教程中的这个问题,但没有任何效果。我在 ios 10 swift 3 中将 facebook 登录与 firebase 集成。最后,我能够成功实现它。我通过在 AppDelegate 文件中进行以下更改来更正它。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FIRApp.configure()
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
return true
}
@available(iOS 9.0, *)
func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any])
-> Bool {
var shouldOpen :Bool = FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String!,annotation: options[UIApplicationOpenURLOptionsKey.annotation])
return shouldOpen
}
// for iOS below 9.0
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
var shouldOpen :Bool = FBSDKApplicationDelegate.sharedInstance().application(application,open: url as URL!,sourceApplication: sourceApplication,annotation: annotation)
return shouldOpen
}
希望对其他人有帮助
在 ios 10.2 模拟器上测试,iPhone 6 Plus 运行 10.2
Swift 4. Xcode 9. iOS 11. Google 登录 + Facebook 登录。 AppDelegate。
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
var signedIn: Bool = GIDSignIn.sharedInstance().handle(url, sourceApplication: sourceApplication, annotation: annotation)
signedIn = signedIn ? signedIn : FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
return signedIn
}
@available(iOS 9.0, *)
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
var signedIn: Bool = GIDSignIn.sharedInstance().handle(url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplicationOpenURLOptionsKey.annotation])
signedIn = signedIn ? signedIn : FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: nil)
return signedIn
}
我的应用程序中同时集成了 facebook 和 gmail,但是一旦我为 gmail 登录添加开放 url 功能,facebook 登录就会停止工作。 我的应用程序
中有用于打开 url 的代码func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
var shouldOpen :Bool = FBSDKApplicationDelegate.sharedInstance().application(application,openURL: url,sourceApplication: sourceApplication,annotation: annotation)
shouldOpen = shouldOpen ? shouldOpen : GIDSignIn.sharedInstance().handleURL(url,
sourceApplication: sourceApplication,
annotation: annotation)
return shouldOpen
}
这适用于 facebook 登录,但是当我为 ios 9 添加 gmail 的 openurl 方法时,问题发生了,即在 facebook 登录后,我们不会重定向回应用程序。在模拟器中,白屏显示在 safari 中。 ios 9
的 gmail 登录代码func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
if #available(iOS 9.0, *) {
return GIDSignIn.sharedInstance().handleURL(url,
sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String?,
annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
}
return true
}
如果我注释掉上面的代码,facebook 登录工作正常我想问题是我必须 return boolean for openurl of facebook in ios 9 .但我不知道该怎么办? TIA
找到我的答案我需要实现打开的两种方法url像这样
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
var shouldOpen :Bool = FBSDKApplicationDelegate.sharedInstance().application(application,openURL: url,sourceApplication: sourceApplication,annotation: annotation)
shouldOpen = shouldOpen ? shouldOpen : GIDSignIn.sharedInstance().handleURL(url,
sourceApplication: sourceApplication,
annotation: annotation)
return shouldOpen
}
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
if #available(iOS 9.0, *) {
var shouldOpen :Bool = FBSDKApplicationDelegate.sharedInstance().application(
app,
openURL: url,
sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as! String,
annotation: nil)
shouldOpen = shouldOpen ? shouldOpen : GIDSignIn.sharedInstance().handleURL(url,sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String?,
annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
return shouldOpen
}
return true
}
我只需要检查 ios 9 的 facebook 打开 url 方法
编辑 swift 3.0 功能更改
private func application(application: UIApplication, openURL url: URL, sourceApplication: String?, annotation: AnyObject) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application,open: url as URL!,sourceApplication: sourceApplication,annotation: annotation)
}
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
if #available(iOS 9.0 , *){
return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: "UIApplicationOpenURLOptionsKey", annotation: nil)
}
return true
}
我尝试了@Aruk k 的回答,但对我没用
我也遇到了过去 1 month.Followed 所有步骤和教程中的这个问题,但没有任何效果。我在 ios 10 swift 3 中将 facebook 登录与 firebase 集成。最后,我能够成功实现它。我通过在 AppDelegate 文件中进行以下更改来更正它。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FIRApp.configure()
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
return true
}
@available(iOS 9.0, *)
func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any])
-> Bool {
var shouldOpen :Bool = FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String!,annotation: options[UIApplicationOpenURLOptionsKey.annotation])
return shouldOpen
}
// for iOS below 9.0
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
var shouldOpen :Bool = FBSDKApplicationDelegate.sharedInstance().application(application,open: url as URL!,sourceApplication: sourceApplication,annotation: annotation)
return shouldOpen
}
希望对其他人有帮助
在 ios 10.2 模拟器上测试,iPhone 6 Plus 运行 10.2
Swift 4. Xcode 9. iOS 11. Google 登录 + Facebook 登录。 AppDelegate。
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
var signedIn: Bool = GIDSignIn.sharedInstance().handle(url, sourceApplication: sourceApplication, annotation: annotation)
signedIn = signedIn ? signedIn : FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
return signedIn
}
@available(iOS 9.0, *)
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
var signedIn: Bool = GIDSignIn.sharedInstance().handle(url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplicationOpenURLOptionsKey.annotation])
signedIn = signedIn ? signedIn : FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: nil)
return signedIn
}