我遇到了一些麻烦。我正在尝试将Google Analytics安装到应用中,并始终使用未解析的标识符GGLContext
和GAI
错误。无论我是否使用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.a
,libsqlite3.0.tbd
,libz.tbd
,libsqlite3.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从头开始两次,没有(我在开始之前制作了我的项目的副本),每次都收到同样的错误。
任何帮助肯定会受到赞赏。提前谢谢。
答案 0 :(得分:16)
好吧,看起来我能够把它弄平了。
所有尝试都有几个问题。
Cocoapods安装不正确。我重新安装,然后导入正确的文件取得了更好的成功。
我上面发布的手动操作不是最佳选择。
在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
不要相信Google教程提供最有效的指导,并利用该主题上的许多SO帖子。
我真的希望这可以帮助那些不花10个小时解决问题的人。
答案 1 :(得分:13)
Swift 4.0和xcode 9.0.1终于解决了。
对我来说,2天后我解决了..请不要按照Google的旧文档说#import <Google/Analytics.h>
pod init
pod 'GoogleAnalytics'
target 'GoogleAnalytics' do
pod install
你会发现框架GAI.h
,其他文件将在pods文件夹下Header.h
文件到您的根目录。 不要添加#import <Google/Analytics.h>
,而是在桥接头文件中单独导入以下内容 e.g。在桥接头文件中删除#import <Google/Analytics.h>
#import GAI.h
#import "GAITracker.h"
#import "GAIFields.h"
#import "GAIDictionaryBuilder.h"
将您的网桥指向目标Swift编译器的构建设置 - 常规 - &gt; Objective-C桥接标题。写下您的桥接文件名Header.h
将来自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;
Tada ....运行你的项目......
答案 2 :(得分:9)
当我使用单身GAI.sharedInstance()
时,我的错误是使用未解析的标识符。
我实现这一目标的步骤是:
pod 'Google/Analytics'
#import "GAI.h"
添加到桥接头文件一切都很完美。
答案 3 :(得分:9)
这适用于swift 2.3,swift 3.0和swift 4:
将其添加到podfile:
pod 'Google/Analytics'
确保您的Bridging-Header.h看起来像这样:
#ifndef Bridging_Header_h
#define Bridging_Header_h
#import <Google/Analytics.h>
#endif /* Bridging_Header_h */
添加到AppDelegate:
import Google
在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并清理项目可能有所帮助。
答案 4 :(得分:0)
让它适用于我的唯一方法是将Google Analytics pod版本降级为2.0.4。
pod&#39; Google / Analytics&#39;,&#39;〜&gt; 2.0.4&#39;