簡體   English   中英

如何在 AppDelegate.swift 中使用 Firebase 遠程配置?

[英]How to use Firebase Remote Config in AppDelegate.swift?

根據建議,我想使用Firebase 遠程配置來管理 API 密鑰,以避免像google_maps_flutter建議的那樣硬編碼 API 密鑰。 它有一個AppDelegate.swift像:

import UIKit
import Flutter
import GoogleMaps

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    GMSServices.provideAPIKey("YOUR KEY HERE")
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}

如何修改上述內容以從Firebase 遠程配置獲取 API 密鑰,然后將其傳遞給GMSServices

基於這篇文章,我想出了:

import UIKit
import Firebase
import Flutter
import GoogleMaps
//import os.log

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    FirebaseApp.configure()
    RemoteConfig.remoteConfig().fetchAndActivate() { status, error in
      let apiKey : String = RemoteConfig.remoteConfig()["Google_Maps_SDK_for_iOS_API_KEY"].stringValue ?? "MISSING";
      // os_log("Google_Maps_SDK_for_iOS_API_KEY = '%@'", apiKey)
      GMSServices.provideAPIKey(apiKey)
    }
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}

有沒有更好的辦法?

我想把它作為評論,但決定把它作為我的答案,因為它太長了。

我認為這是從 remoteConfig 獲取密鑰的一種方法,但是在未檢索到 fetch 配置的情況下可能會再次失敗。 解決它的一種方法是在它失敗時強制刷新,但是你再次依賴於這些鍵的 firebase,如果由於某種原因(在 firebase 被谷歌收購之前經歷過它)它關閉了你的應用程序然后將無法使用(對於許多應用程序也是如此)。

對我來說,我仍然將我的 API 密鑰與應用程序捆綁在一起,只是為了確保所有重要的功能都能正常工作。

另一種選擇是捆綁您的 API 密鑰,然后在您擁有的當前密鑰過期/更改后進行 WebService 調用以檢查新密鑰。 這樣您就可以立即使您的密鑰過期並將其更改為另一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM