使用未解析的标识符“GMSServices”

Posted

技术标签:

【中文标题】使用未解析的标识符“GMSServices”【英文标题】:Use of Unresolved Identifier 'GMSServices' 【发布时间】:2016-02-25 01:52:42 【问题描述】:

我使用的是 Xcode 7.1,部署目标是 ios 9.1。该应用程序是“AreaCalculator”,它是用 Swift 编写的。我做了以下设置框架并导入地图:

    $ sudo gem install cocoapods

    在“AreaCalculator”下 $ touch Podfile

    在我放的 Podfile 中:

    source 'https://github.com/CocoaPods/Specs.git'
    platform :ios, '9.1'
    pod 'GoogleMaps'
    

    $ pod 安装

    在终端:

    [!] 无法加载插件 /Library/Ruby/Gems/2.0.0/gems/cocoapods-try-release-fix-0.1.2 的规范 更新本地规范存储库 分析依赖关系 下载依赖项 安装谷歌地图 (1.10.5) 生成 Pods 项目 整合客户项目

    [!] 从现在开始,请关闭所有当前 Xcode 会话并为此项目使用 AreaCalculator.xcworkspace。 发送统计数据 豆荚安装完成! Podfile 有 1 个依赖项,总共有 1 个 吊舱已安装。

    之后,我在导航器中选择了 AreaCalculator 文件夹 并选择 File\New\File...,然后选择 iOS\Source\Objective-C 文件模板并创建了一个桥接文件: “面积计算器-Bridging-Header.h”。

    "#import GoogleMaps/GoogleMaps.h

    然后我在“Link Binary With Libraries”中添加“GoogleMaps.framework”。 “GoogleMaps.framwork”和“GoogleMaps.bundle”都在 Pods 文件夹。

    完成所有这些之后,我在 AppDelegate.swift 中输入:

    import UIKit
    
    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate 
    
        var window: UIWindow?
        let googleMapsApiKey = "MY_GOOGLE_IOS_API_KEY"
    
        func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
            // Override point for customization after application launch.
            GMSServices.provideAPIKey(googleMapsApiKey)
            return true
        
    
    

但是,编译器向我显示错误“使用未解析的标识符'GMSServices'”。

我不知道我哪里做错了?有人可以帮忙吗?

谢谢!

【问题讨论】:

【参考方案1】:

我已经通过 AppDelegate.swift 中的“import GoogleMaps”解决了这个问题。

【讨论】:

这对我有用。它应该被标记为已接受的答案。 谢谢。我在将 Google Places 和 Google Places Picker 安装到我的项目中时遇到了同样的问题。我采取了前所未有的措施,通过他们的网站向 Google 团队发送反馈,以突出显示他们示例代码中缺失的行。 谢谢。我必须使用 @import GoogleMaps; 因为我使用的是目标 C 但我的说:没有这样的模块'GoogleMaps'【参考方案2】:

在 AppDelegate.m 中添加这一行

#import "GoogleMaps/GoogleMaps.h"

【讨论】:

【参考方案3】:

对于 react native,请确保您从上面导入到 #if DEBUG 模式。

Put librarries above #if DEBUG

#import "AppDelegate.h"

#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
#import "RNSplashScreen.h" // here
#import <GoogleMaps/GoogleMaps.h>
#if DEBUG
#import <FlipperKit/FlipperClient.h>
#import <FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.h>
#import <FlipperKitUserDefaultsPlugin/FKUserDefaultsPlugin.h>
#import <FlipperKitNetworkPlugin/FlipperKitNetworkPlugin.h>
#import <SKIOSNetworkPlugin/SKIOSNetworkAdapter.h>
#import <FlipperKitReactPlugin/FlipperKitReactPlugin.h>```

Found here -> https://github.com/react-native-community/react-native-maps/issues/3453#issuecomment-665475820

【讨论】:

【参考方案4】:
....
#add this line
import GoogleMaps


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

【讨论】:

【参考方案5】:

对于 react native 0.64.1

在 AppDelegate.m 中添加这一行

#import <GoogleMaps/GoogleMaps.h>

上面

#ifdef FB_SONARKIT_ENABLED

例如:

#import <React/RCTLinkingManager.h>
#import "ReactNativeConfig.h"
#import <GoogleMaps/GoogleMaps.h>

#ifdef FB_SONARKIT_ENABLED
#import <FlipperKit/FlipperClient.h>

【讨论】:

【参考方案6】:

我在使用 Flutter 时遇到了这个问题,并通过将 import GoogleMaps 添加到位于 ios > Runner 中的 AppDelegate.swift 文件中解决了这个问题>

它应该是这样的:

import UIKit
import Flutter
import GoogleMaps

【讨论】:

以上是关于使用未解析的标识符“GMSServices”的主要内容,如果未能解决你的问题,请参考以下文章

使用未解析的标识符 FBSession

使用未解析的标识符 'json' (Swift 3) (Alamofire)

出现错误:使用未解析的标识符“LinkingObjects”

SDKApplicationDelegate 使用未解析的标识符

使用未解析的标识符 countElements [重复]

使用未解析的标识符“tableView”