使用Swift的CocoaPods 0.36上的GoogleAnalytics-iOS-SDK

时间:2015-03-01 10:02:05

标签: ios swift cocoapods

任何人都知道如何使用CocoaPods 0.36编写Swift的桥接头?

我试过这些方法。

(1)

#import <GoogleAnalytics-iOS-SDK/GAI.h>

=&GT;这是cocoapods 0.35风格。无法编译。

(2)

#import <GoogleAnalytics-iOS-SDK/GoogleAnalytics-iOS-SDK/GAI.h>

=&GT;无法编译。

(3)

#import "../Pods/GoogleAnalytics-iOS-SDK/GoogleAnalytics/Library/GAI.h"

=&GT;它可以被遵守。但链接失败。

4 个答案:

答案 0 :(得分:15)

我设法通过Cocoapods成功将Google Analytics iOS SDK 3.10包含在我的Swift项目中,并按照这些步骤使用框架。

在Podfile上添加(注意use_frameworks!):

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

target "XXXX" do
    pod 'GoogleAnalytics-iOS-SDK', '~> 3.10'
end

target "XXXXTests" do
    pod 'GoogleAnalytics-iOS-SDK', '~> 3.10'
end

AppDelegate导入部分添加:

import GoogleAnalytics_iOS_SDK

application didFinishLaunchingWithOptions方法上添加:

    GAI.sharedInstance().trackUncaughtExceptions = true
    GAI.sharedInstance().dispatchInterval = 20
    GAI.sharedInstance().logger.logLevel = GAILogLevel.Verbose
    GAI.sharedInstance().trackerWithTrackingId("XXXX")
    GAI.sharedInstance().defaultTracker.allowIDFACollection = true

此时,您的代码将无法编译。您需要手动将其他依赖项添加到目标,包括应用程序和单元测试(如https://developers.google.com/analytics/devguides/collection/ios/v3/#headers所示)。

  • CoreData.framework
  • SystemConfiguration.framework
  • libz.dylib
  • libsqlite3.dylib
  • libGoogleAnalyticsServices.a

注意libGoogleAnalyticsServices.a。出于某种原因,Cocoapods在使用框架时不包含此内容。如果不添加此文件,链接器将失败并显示以下错误:

Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_GAI", referenced from: __TMaCSo3GAI in AppDelegate.o

为了添加它,我手动下载了SDK(从此页面https://developers.google.com/analytics/devguides/collection/ios/resources)并将libGoogleAnalyticsServices.a拖到我的项目中,确保它已添加到两个目标和“复制”复选框被检查了。

enter image description here

在添加文件和其他提到的依赖项之后,项目正确构建。

似乎Cocoapods只包含了Google AnalyticsSDK中的头文件。此解决方案并不完美,但无需为Google Analytics添加桥接标头。

答案 1 :(得分:1)

我在CocoaPods 0.39.0上遇到了类似的问题。

构建设置'OTHER_LDFLAGS'中的

$(继承)解决了它。

https://stackoverflow.com/a/32004207/3129306

答案 2 :(得分:0)

目前遇到同样的问题......

我使用以下方法获得了桥接标题:

#import <GoogleAnalytics_iOS_SDK/GAI.h>
#import <GoogleAnalytics_iOS_SDK/GAITrackedViewController.h>
#import <GoogleAnalytics_iOS_SDK/GAIDictionaryBuilder.h>
#import <GoogleAnalytics_iOS_SDK/GAIFields.h>

不幸的是,虽然这传递了构建,但我不能在我的项目中使用它。如果我找到更多......我会更新。

答案 3 :(得分:0)

使用桥接标头时,您应该可以使用以下导入语句导入Google Analytics iOS SDK:

#import <GoogleAnalytics-iOS-SDK/GAI.h>

如果您使用pod作为框架(通过在podfile中设置'use_frameworks!'),则不需要桥接文件。在swift类中,您只需使用以下语句导入它:

import GoogleAnalytics_iOS_SDK

如果这不起作用,我认为你的项目设置有问题。要解决这个问题,我需要更多信息。