如何安全地存储 AppDelegate.swift 的 api 密钥

问题描述 投票:0回答:1
import UIKit
import Flutter
import GoogleMaps
import flutter_local_notifications

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    // Todo: Add your API key here
    GMSServices.provideAPIKey("XXXXXXXXXXXXXXXX")

    FlutterLocalNotificationsPlugin.setPluginRegistrantCallback { (registry) in
        GeneratedPluginRegistrant.register(with: registry)
    }

    if #available(iOS 10.0, *) {
      UNUserNotificationCenter.current().delegate = self as UNUserNotificationCenterDelegate
    }
    
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}

我正在制作一个 flutter 移动应用程序,上面是我的 ios/Runner/AppDelegate.swift 文件。 现在我需要提供 Gmap api 密钥,但来自另一个文件,该文件将被 .gitignored,因此我的 api 密钥不会在我的版本控制上发布。

我在 Android 上做了类似的事情,将密钥存储在以下位置: android/app/src/main/res/values/keys.xml

ios flutter key api-key
1个回答
0
投票

不存在将某些内容安全地存储在客户端应用程序上的情况。恶意用户始终可以反编译代码并检索您的 API 密钥。

相反,您可以尽最大努力在 Google Cloud Console 中使用此 Google Maps API 密钥,方法是将其限制为仅由具有您定义的应用程序 ID 的应用程序使用: API 安全最佳实践 - 设置应用程序限制API 密钥

© www.soinside.com 2019 - 2024. All rights reserved.