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

mu0hgdu0  于 2022-11-06  发布在  Swift
关注(0)|答案(5)|浏览(191)

我遇到了一点麻烦。我试图将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
我已经通过了许多教程和其他如此的问题,都无济于事。我想,有一些小东西,我失踪了,但找不到它。
我做了什么:
我的项目中有.h文件,沿着libGoogleAnalyticsServices.alibsqlite3.0.tbdlibz.tbdlibsqlite3.tbd(所有这些文件都已链接到库以及CoreData和SystemConfiguration)。
您可以在此处查看所有这些文件的布局:

和此处:

我已经创建了-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和没有(我做了一个副本,我的项目开始前),我收到了同样的错误,每次。
任何帮助都将不胜感激。提前感谢。

de90aj5v

de90aj5v1#

看起来我能搞定了。
在这方面的所有尝试都有几个问题。

  1. Cocoapods没有正确安装。我重新安装,然后最好成功导入正确的文件。
    1.这样做的手动,因为我张贴以上是不是最好的选择.
    1.在重新安装Cocoapods并从我的项目的一个新副本重新开始后,我能够将import Google导入我的AppDelegate.swift
    对于那些可能最终与我处于同一条船上的人来说,关键点是:
  • 请确保为您的-Bridging-Header.h添加正确的目录。您可以在Project - Build Settings - Swift Compiler Code Generation下找到此目录。使用此目录可以轻松地定位您的头文件$(SWIFT_MODULE_NAME)-Bridging-Header.h
  • 在您的-Bridging-Header.h中,不要使用#import <Google/Analytics.h>,而是单独导入文件。以下是可导入文件的图像。

  • 如有疑问,请重新安装Cocoapods
  • 不要相信谷歌教程提供最有效的指导,并利用许多关于该主题的SO帖子。

我真的希望这能帮助有人不像我一样花10个小时在这个问题上。

luaexgnf

luaexgnf2#

Swift 4.0和xcode 9.0.1终于解决了。

对我来说,2天后,我解决了。.不要按照谷歌的旧文档说#import <Google/Analytics.h>
1.转到终端类型pod init

  1. pod工作区创建后,重新打开项目作为工作区,打开pod文件。在pod文件中的target 'GoogleAnalytics' do之前写入pod 'GoogleAnalytics'
    1.返回终端pod install,您将在pod文件夹下找到框架GAI.h和其他文件
    1.在根目录下创建Header.h文件***不要添加#import <Google/Analytics.h>***而是在桥接头文件中单独导入以下内容
    例如,在桥接头文件中删除#import <Google/Analytics.h>

# import GAI.h

# import "GAITracker.h"

# import "GAIFields.h"

# import "GAIDictionaryBuilder.h"

1.在目标Swift编译器的构建设置--通用--〉Objective-C桥接头下指向你的桥接器。写入桥接文件名的Header.h
1.从google为swift添加代码到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;

多田....运行您的项目...

ibps3vxo

ibps3vxo3#

我的错误是在使用单一GAI.sharedInstance()时使用了未解析的标识符。
我将其付诸实践的步骤是:
1.将pod 'Google/Analytics'相加

  1. pod安装程序
    1.重新启动xcode
    1.在我的项目中创建一个objc类以获取桥接头
    1.在桥接头文件中添加了#import "GAI.h"
    一切都很完美。
5us2dqdw

5us2dqdw4#

这适用于swift 2.3、swift 3.0和swift 4:
1.将GoogleService-Info.plist文件添加到项目的根目录
1.将此添加到podfile:

pod 'Google/Analytics'

1.退出Xcode,在终端中运行“pod install”,然后再次打开Xcode
1.在项目根目录下创建一个名为Bridging-Header.h的头文件,在构建设置下确保桥接头文件的定义与图片x1c 0d1x中的定义相同
1.请确保您的Bridging-Header.h如下所示:


# ifndef Bridging_Header_h

  #define Bridging_Header_h
  #import <Google/Analytics.h> 
  #endif /* Bridging_Header_h */

1.添加到AppDelegate:

import Google

1.将以下代码添加到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

如果有错误,删除DerivedData并清除项目可能会有所帮助。

p5fdfcr1

p5fdfcr15#

唯一能让它为我工作的方法是将谷歌分析pod版本降级到2. 0. 4。
pod '谷歌/分析','~〉2.0.4'

相关问题