ใครที่เรียนสร้างแอพด้วย Google Flutter Online จะมีช่วงที่เราได้ลองใช้งาน Firebase ในแอพของเรา ซึ่งขั้นตอนเริ่มต้น ก็คือการทำข้อมูลที่เราสร้างไว้บน Firebase มาเชื่อมต่อใช้งานในแอพ Flutter ของเราบน iOS
ทีนี้หลังจากที่เราทำการเอาไฟล์ GoogleService-Info.plist มาใส่ในโปรเจค Xcode แล้ว ขั้นตอนสำคัญไม่แพ้กันเลยก็คือการใส่โค้ดในไฟล์ Swift เพื่อให้ Firebase พร้อมใช้งาน
ทีนี้มันมีจุดเล็กๆ ครับ ที่หลังจากทำการใช้ Firebase ใน Flutter มาหลายครั้ง เจอ bug บ้าง build ไม่ขึ้นบ้าง สิ่งละอันพันละน้อยพาพลมาสังเกตตรงส่วนของการใส่ โค้ดในการ configure ตัว Firebase มีความเกี่ยวพันกับปัญหาจุกจิกพวกนั้นครับ
ดังนั้น ถ้าเราใส่โค้ดถูกที่ ก็น่าจะทำให้เราสามารถหลีกเลี่ยงต้นตอของปัญหาโลกแตกหลายๆ อันที่พลเจอมา น่าจะดีกว่าใช่ไหมล่ะ
เรามาดูไฟล์ AppDelegate.swift กันดีกว่า
import UIKit
import Flutter
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
ไฟล์นี้แหละ ที่ระหว่างการ Configure แอพ iOS ของ Firebase เราตามขั้นตอนที่เขาบอกจะเป็นประมาณนี้
import UIKit
import Firebase // เพิ่มบรรทัดนี้
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure() // เพิ่มบรรทัดนี้
return true
}
}
จะเห็นว่า จะมีอยู่ 2 บรรทัดที่เราต้องเพิ่มเข้าไปในไฟล์ AppDelegate.swift
import Firebase
FirebaseApp.configure()
คำสั่งแรก ไม่เท่าไหร่ แต่คำสั่งที่ 2 เนี่ย มันไม่ได้มีที่ว่างแบบเดียวกับในตัวอย่างของ Firebase นี่สิ มันเป็นแบบด้านล่างนี้
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
ซึ่งกลายเป็นว่าส่วนของ Firebase ที่วางลงไปใน function นี้จะมี 2 ตำแหน่งครับ
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// ตำแหน่งที่ 1
GeneratedPluginRegistrant.register(with: self)
// ตำแหน่งที่ 2
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
ซึ่งจาก bug ที่เจอๆ มา จะเกิดขึ้นจากการวางคำส่ัง FirebaseApp.configure()
ไว้ในตำแหน่งที่ 2 ครับ
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
FirebaseApp.configure() // ตำแหน่งที่ 2
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
ดังนั้นหากเราวางไว้ในส่วนตำแหน่งที่ 1 จะพบปัญหาจุกจิกน้อยกว่า ในส่วนของการใช้ Firebase กับแอพ iOS
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
FirebaseApp.configure() // ตำแหน่งที่ 1
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
ใครเจอปัญหาจุกจิกมากมายลองเอาเทคนิคนี้ไปใช้กันดูนะครับ
เริ่มต้นเรียนรู้สร้างแอพ iOS และ Android ด้วย Google Flutter ไปกับโค้ชพล
✅ เหมาะสำหรับผู้เริ่มต้น
✅ เขียนครั้งเดียว ใช้ได้ทั้งระบบ iOS และ Android ประหยัดเวลา
✅ เรียนได้ทุกเวลา ไม่มีวันหมดอายุ
✅ ได้รู้ตั้งแต่วิธีติดตั้งโปรแกรม จนเอาขึ้นApp Store และ Play Store
✅ ได้ทำแอพของจริง เริ่มต้นจาก 0 ทุกโปรเจค มีระบบถามตอบ กรณีติดปัญหา