如何让 SwiftUI 应用程序使用 Firebase Functions 模拟器而不是生产环境?
Posted
技术标签:
【中文标题】如何让 SwiftUI 应用程序使用 Firebase Functions 模拟器而不是生产环境?【英文标题】:How to get SwiftUI app to use Firebase Functions emulator instead of production? 【发布时间】:2021-06-01 15:03:55 【问题描述】:所以我目前将 Firebase Functions 模拟器调用添加到我的代码中
import SwiftUI
import Firebase
import FirebaseAuth
import FirebaseFunctions
@main
struct My_Web_App: App
init()
FirebaseApp.configure()
Functions.functions().useEmulator(withHost: "http://localhost", port: 5000)
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5000")
var body: some Scene
WindowGroup
MyFirstView()
但不管我什么时候使用
Functions.functions.httpsCallable("myFunction").call()
它不起作用。它不断调用生产中的函数而不是本地函数。有人可以告诉我我可能做错了什么吗?
非常感谢任何帮助。谢谢。
【问题讨论】:
【参考方案1】:Cloud Functions 模拟器通常在端口 5001 上启动(请参阅docs)。
以下对我有用:
let functions = Functions.functions()
functions.useEmulator(withHost: "localhost", port: 5001)
let helloWorldCallable = functions.httpsCallable("helloWorld")
helloWorldCallable.call result, error in
if let error = error as NSError?
if error.domain == FunctionsErrorDomain
let code = FunctionsErrorCode(rawValue: error.code)
let message = error.localizedDescription
let details = error.userInfo[FunctionsErrorDetailsKey]
print("There was an error when trying to call the function. \n" +
"Code: \(String(describing: code)) \n" +
"Message: \(message) \n" +
"Details: \(String(describing: details))")
if let data = result?.data as? String
self.message = data
self.showResultSheet = true
【讨论】:
以上是关于如何让 SwiftUI 应用程序使用 Firebase Functions 模拟器而不是生产环境?的主要内容,如果未能解决你的问题,请参考以下文章
如何让@AppStorage 在 MVVM / SwiftUI 框架中工作?
在 SwiftUI 中制作聊天应用程序:如何让 ScrollView 在键盘出现时保持原位?