问题描述
我有一个ios应用程序,可以正常和Facebook登录正常运行.今天,我集成了Firebase,当我在应用程序委托中编写FirebaseApp.configure()时,我的应用程序崩溃了,该函数突出显示,错误代码为意外发现为nil,同时展开了一个可选值":
I have an ios app which works fine with normal and facebook login. Today I integrated firebase and when I write FirebaseApp.configure() in app delegate, my app crashes and this function is highlighted with error code "unexpectedly found nil while unwrapping an optional value":
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String, annotation: options[UIApplicationOpenURLOptionsKey.annotation])
}
AppDelegate类的代码为:
Code for AppDelegate class is:
//
// AppDelegate.swift
//
//
// Created by Macbook on 01/01/2018.
// Copyright © 2018 Macbo0k. All rights reserved.
//
import UIKit
import IQKeyboardManagerSwift
import FBSDKCoreKit
import FBSDKLoginKit
import Firebase
import UserNotifications
import FirebaseInstanceID
import FirebaseMessaging
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let usd = UserDefaults.standard
if usd.object(forKey: "loginstatus") != nil && (usd.value(forKey: "loginstatus") != nil) {
if usd.value(forKey: "loginstatus") as! Bool != false{
self.window = UIWindow(frame: UIScreen.main.bounds)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewController = storyboard.instantiateViewController(withIdentifier: "tabbarvc")
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()
}
}
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
let newFont = UIFont(name: "BebasNeueLight", size: 20.0)!
let color = UIColor(red: 255,green:204, blue:102)
UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor: color,
NSAttributedStringKey.font: UIFont(name: "BebasNeueRegular", size: 20)!
]
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UINavigationBar.classForCoder() as! UIAppearanceContainer.Type]).setTitleTextAttributes([NSAttributedStringKey.foregroundColor: color, NSAttributedStringKey.font: newFont], for: .normal)
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UINavigationBar.classForCoder() as! UIAppearanceContainer.Type]).setTitleTextAttributes([NSAttributedStringKey.foregroundColor: color, NSAttributedStringKey.font: newFont], for: .highlighted)
//print("fonts are: \(UIFont.familyNames)")
IQKeyboardManager.sharedManager().enable = true
FirebaseApp.configure()
return true
}
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
let isFacebookURL = url.scheme != nil && url.scheme!.hasPrefix("fb\(FBSDKSettings.appID())") && url.host == "authorize"
if isFacebookURL {
return FBSDKApplicationDelegate.sharedInstance().application(application, open: url as URL!, sourceApplication: sourceApplication, annotation: annotation)
}
return false
}
func applicationWillResignActive(_ application: UIApplication) {
}
func applicationDidEnterBackground(_ application: UIApplication) {
print("app is in background mode")
}
func applicationWillEnterForeground(_ application: UIApplication) {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}
func applicationDidBecomeActive(_ application: UIApplication) {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
FBSDKAppEvents.activateApp()
}
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String, annotation: options[UIApplicationOpenURLOptionsKey.annotation])
}
func applicationWillTerminate(_ application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
}
,日志为:
2018-02-13 14:50:30.070051+0500 Sneakersapp[11075:119374] [MC] Reading from private effective user settings.
2018-02-13 14:50:30.113172+0500 Sneakersapp[11075:119374] Could not successfully update network info during initialization.
2018-02-13 14:50:30.824700+0500 Sneakersapp[11075:119470] TIC TCP Conn Failed [6:0x600000169480]: 12:8 Err(-65554)
2018-02-13 14:50:30.827309+0500 Sneakersapp[11075:119444] Task <D3E060F1-6F56-451A-B00C-CD3CFF86CD8F>.<2> HTTP load failed (error code: -1003 [12:8])
2018-02-13 14:50:30.827738+0500 Sneakersapp[11075:119444] Task <D3E060F1-6F56-451A-B00C-CD3CFF86CD8F>.<2> finished with error - code: -1003
2018-02-13 14:50:31.064485+0500 Sneakersapp[11075:119470] TIC Read Status [3:0x0]: 1:57
2018-02-13 14:50:31.064751+0500 Sneakersapp[11075:119470] TIC Read Status [3:0x0]: 1:57
2018-02-13 14:50:31.198410+0500 Sneakersapp[11075:119444] TIC Read Status [1:0x0]: 1:57
2018-02-13 14:50:31.199036+0500 Sneakersapp[11075:119444] TIC Read Status [1:0x0]: 1:57
2018-02-13 14:50:31.808151+0500 Sneakersapp[11075:119469] TIC Read Status [4:0x0]: 1:57
2018-02-13 14:50:31.808292+0500 Sneakersapp[11075:119469] TIC Read Status [4:0x0]: 1:57
(lldb)
一旦我从didfinishLaunchingWithOptions函数中注释了FirebaseApp.configure(),应用程序就可以正常工作.
App works fine once i comment the FirebaseApp.configure() from didfinishLaunchingWithOptions function.
请帮助.
推荐答案
我知道回答这个问题可能为时已晚,但是我遇到了同样的问题,并且注意到我忘记了在主目录上导入GoogleService-Info.plist的应用程序.
I know it may be too late to answer this, but I had the same issue and noticed that I forgot to import GoogleService-Info.plist on the main directory of the app.
这篇关于当我编写FirebaseApp.configure()时,iOS应用程序崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!