2

我最近发现一个更新需要集成 Firebase 以进行崩溃报告分析,以及之前实现的 Facebook 登录。我已经用 FBSDKLoginButton 实现了 FB 登录,效果非常好。

但是当我取消[FIRApp configure]评论appdelegate它停止处理application:openURL:options:时,我 100% 确定 FB 登录实现,正如我所说,如果我评论它工作正常 [FIRApp configure]

这是供参考的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      BOOL b = [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
      [FIRApp configure]; //If I comment this, works fine with FB callback which handles at application:openURL:options:
      return b;
}

-(BOOL)application:(UIApplication *)app
       openURL:(NSURL *)url
       options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {

       BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:app
                                                              openURL:url
                                                    sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                                                           annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
     return handled;
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
     [FBSDKAppEvents activateApp];
}

一旦我们取消注释 Firebase 配置方法, FB Call back 将更改为以下 backtrace :

-[ViewController loginButton:didCompleteWithResult:error:]

-[FBSDKLoginButton _buttonPressed:]_block_invoke

-[FBSDKLoginManager 调用处理程序:错误:]

-[FBSDKLoginManager(Native) 处理ImplicitCancelOfLogIn]

-[FBSDKApplicationDelegate applicationDidBecomeActive:]

更新

问题在于[FIRApp configure]所以请在情况相同的情况下提出解决方案。

4

3 回答 3

4

或者您可以使用 FirebaseAppDelegateProxy 禁用它。在 info.plist 中粘贴值为 NO 的 FirebaseAppDelegateProxyEnabled。

于 2017-06-14T10:38:54.430 回答
2

请检查这个。

在您的项目 goto -> Info 中,您需要在 url 类型中粘贴 reversegoogle 键,可能是您正在做的错误,只需将代码粘贴到 appdelegate

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
    if ([url.scheme hasPrefix:@"fb"]){
        return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                              openURL:url
                                                    sourceApplication:sourceApplication
                                                           annotation:annotation];
    }else{
        return [[GIDSignIn sharedInstance] handleURL:url
                                   sourceApplication:sourceApplication
                                          annotation:annotation];
    }
}
于 2017-04-28T10:39:09.480 回答
0

我不确定我的解决方案与 OP 有什么关系,但我在 Facebook 登录和 Firebase 之间的冲突已通过将其放入我的 pod 文件中得到解决:

pod 'FBSDKCoreKit', '4.38.1'
pod 'FBSDKLoginKit', '4.38.1'

如此处所述:https ://github.com/facebook/facebook-swift-sdk/issues/298

于 2018-12-19T09:42:18.277 回答