使用未解析的标识符GGLContext和GAI

时间:2016-05-15 17:18:58

标签: xcode swift google-analytics swift2

我遇到了一些麻烦。我正在尝试将Google Analytics安装到应用中,并始终使用未解析的标识符GGLContextGAI错误。无论我是否使用CocoaPods,我都会收到同样的错误。错误的位置在AppDelegate.swift此处:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.

    var configureError:NSError?
    GGLContext.sharedInstance().configureWithError(&configureError)
    assert(configureError == nil, "Error configuring Google services: \(configureError)")

    // Optional: configure GAI options.
    let gai = GAI.sharedInstance()
    gai.trackUncaughtExceptions = true  // report uncaught exceptions

    return true
}

无法将其他内容导入AppDelegate.swift(例如Google),只能导入标准UIKit

我经历了很多教程和其他SO问题,但都无济于事。我认为我遗失了一些小东西,却找不到它。

我做了什么:

我的项目中有.h个文件,以及libGoogleAnalyticsServices.alibsqlite3.0.tbdlibz.tbdlibsqlite3.tbd(所有这些文件都已链接到库以及CoreData和SystemConfiguration)。

您可以在此处查看所有这些文件的布局:

enter image description here

在这里:

enter image description here

我创建了-Bridging-Header.h并在其中包含了这些.h个导入内容。

#import "GAI.h"
#import "GAIDictionaryBuilder.h"
#import "GAIEcommerceFields.h"
#import "GAIEcommerceProduct.h"
#import "GAIEcommerceProductAction.h"
#import "GAIEcommercePromotion.h"
#import "GAIFields.h"
#import "GAILogger.h"
#import "GAITrackedViewController.h"
#import "GAITracker.h"

-Bridging-Header.h在构建设置中链接,我没有收到任何错误。这是我在研究期间找到的主要解决方案,在这种情况下对我没有帮助。

我试图用CocoaPods从头开始两次,没有(我在开始之前制作了我的项目的副本),每次都收到同样的错误。

任何帮助肯定会受到赞赏。提前谢谢。

5 个答案:

答案 0 :(得分:16)

好吧,看起来我能够把它弄平了。

所有尝试都有几个问题。

  1. Cocoapods安装不正确。我重新安装,然后导入正确的文件取得了更好的成功。

  2. 我上面发布的手动操作不是最佳选择。

  3. 在Cocoapods重新安装并从我的项目的新副本重新开始之后,我能够import Google进入我的AppDelegate.swift

  4. 那些可能最终出现在同一条船上的人的关键点:

    • 请务必为-Bridging-Header.h添加正确的目录。您可以在Project - Build Settings - Swift Compiler Code Generation下找到它。使用此选项可轻松定位标题文件$(SWIFT_MODULE_NAME)-Bridging-Header.h

    • -Bridging-Header.h中,请勿#import <Google/Analytics.h>,而是单独导入文件。以下是可导入文件的图像。

    enter image description here

    • 如有疑问,请重新安装Cocoapods

    • 不要相信Google教程提供最有效的指导,并利用该主题上的许多SO帖子。

    我真的希望这可以帮助那些不花10个小时解决问题的人。

答案 1 :(得分:13)

Swift 4.0和xcode 9.0.1终于解决了。

对我来说,2天后我解决了..请不要按照Google的旧文档说#import <Google/Analytics.h>

  1. 转到终端类型pod init
  2. 创建pod工作区后,重新打开项目作为工作区,打开podfile。在pod 'GoogleAnalytics'
  3. 之前在您的pod文件中写下target 'GoogleAnalytics' do
  4. 返回终端pod install你会发现框架GAI.h,其他文件将在pods文件夹下
  5. 创建Header.h文件到您的根目录。 不要添加#import <Google/Analytics.h> ,而是在桥接头文件中单独导入以下内容
  6. e.g。在桥接头文件中删除#import <Google/Analytics.h>

    #import GAI.h
    #import "GAITracker.h"
    #import "GAIFields.h"
    #import "GAIDictionaryBuilder.h"
    
    1. 将您的网桥指向目标Swift编译器的构建设置 - 常规 - &gt; Objective-C桥接标题。写下您的桥接文件名Header.h

    2. 将来自Google的代码添加到didFinishLaunchingWithOptions 不要忘记从Google Analytics页面替换您的跟踪ID

          guard let gai = GAI.sharedInstance() else {
              assert(false, "Google Analytics not configured correctly")
          }
          gai.tracker(withTrackingId: "YOUR_TRACKING_ID")
          // Optional: automatically report uncaught exceptions.
          gai.trackUncaughtExceptions = true
      
          // Optional: set Logger to VERBOSE for debug information.
          // Remove before app release.
          gai.logger.logLevel = .verbose;
      
    3. Tada ....运行你的项目......

答案 2 :(得分:9)

当我使用单身GAI.sharedInstance()时,我的错误是使用未解析的标识符。

我实现这一目标的步骤是:

  1. 添加pod 'Google/Analytics'
  2. pod install
  3. 重新启动xcode
  4. 在我的项目中创建一个objc类以获得桥接标题
  5. #import "GAI.h"添加到桥接头文件
  6. 一切都很完美。

答案 3 :(得分:9)

这适用于swift 2.3,swift 3.0和swift 4:

  1. 将GoogleService-Info.plist文件添加到项目的根目录
  2. 将其添加到podfile:

      pod 'Google/Analytics'
    
  3. 退出Xcode,运行&#34; pod install&#34;在终端再次打开Xcode
  4. 在项目根目录中创建一个名为Bridging-Header.h的头文件,在构建设置下确保桥接头定义如图所示 enter image description here

  5. 确保您的Bridging-Header.h看起来像这样:

      #ifndef Bridging_Header_h
      #define Bridging_Header_h
      #import <Google/Analytics.h> 
      #endif /* Bridging_Header_h */
    
  6. 添加到AppDelegate:

    import Google        
    
  7. 在didFinishLaunchingWithOptions方法中将此代码添加到AppDelegate:

    // Configure tracker from GoogleService-Info.plist.
    var configureError: NSError?
    GGLContext.sharedInstance().configureWithError(&configureError)
    
    assert(configureError == nil, "Error configuring Google services:\(configureError)")
    
    // Optional: configure GAI options.
    guard let gai = GAI.sharedInstance() else {
        assert(false, "Google Analytics not configured correctly")
    }
    gai.trackUncaughtExceptions = true  // report uncaught exceptions
    gai.logger.logLevel = GAILogLevel.Verbose  // remove before app release
    
  8. 如果有错误,删除DerivedData并清理项目可能有所帮助。

答案 4 :(得分:0)

让它适用于我的唯一方法是将Google Analytics pod版本降级为2.0.4。

pod&#39; Google / Analytics&#39;,&#39;〜&gt; 2.0.4&#39;