From 0243c551ccb4f1a3c0be38565a0d2a68cc1ff16d Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Fri, 6 Dec 2013 23:52:49 -0600 Subject: [PATCH] [GoogleAnalytics] Updated binding to version 3.02 --- GoogleAnalytics/binding/ApiDefinition.cs | 356 ++++++++++++------ ...tics.csproj => GoogleAnalytics.iOS.csproj} | 13 +- GoogleAnalytics/binding/Makefile | 31 +- GoogleAnalytics/binding/StructsAndEnums.cs | 23 +- GoogleAnalytics/binding/extras.cs | 18 - .../binding/libGoogleAnalytics.linkwith.cs | 4 - .../libGoogleAnalyticsServices.linkwith.cs | 50 +++ 7 files changed, 316 insertions(+), 179 deletions(-) rename GoogleAnalytics/binding/{GoogleAnalytics.csproj => GoogleAnalytics.iOS.csproj} (83%) delete mode 100644 GoogleAnalytics/binding/extras.cs delete mode 100644 GoogleAnalytics/binding/libGoogleAnalytics.linkwith.cs create mode 100644 GoogleAnalytics/binding/libGoogleAnalyticsServices.linkwith.cs diff --git a/GoogleAnalytics/binding/ApiDefinition.cs b/GoogleAnalytics/binding/ApiDefinition.cs index 8229ccd9..6e221c7e 100644 --- a/GoogleAnalytics/binding/ApiDefinition.cs +++ b/GoogleAnalytics/binding/ApiDefinition.cs @@ -1,187 +1,305 @@ -// -// Binding to the GANTracker.h Google Analytics iPhone SDK from Google -// -// MIT X11 licensed -// -// Copyright 2009 Novell, Inc. -// Copyright 2011 Xamarin Inc -// using System; +using System.Drawing; +using MonoTouch.ObjCRuntime; using MonoTouch.Foundation; +using MonoTouch.UIKit; -namespace GoogleAnalytics { - +namespace GoogleAnalytics.iOS +{ [BaseType (typeof (NSObject))] - interface GAI { - [Internal] - [Export ("defaultTracker")] - IntPtr InternalDefaultTracker { get; set; } + interface GAI + { + [Field ("GAIProduct", "__Internal")] + NSString Product { get; } + + [Field ("GAIVersion", "__Internal")] + NSString Version { get; } + + [Field ("GAIErrorDomain", "__Internal")] + NSString GAIErrorDomain { get; } + + [Export ("defaultTracker", ArgumentSemantic.Assign)] [NullAllowed] + IGAITracker DefaultTracker { get; set; } - [Export ("debug")] - bool Debug { get; set; } + [Export ("logger", ArgumentSemantic.Retain)] [NullAllowed] + IGAILogger Logger { get; set; } - [Export ("optOut")] - bool OptOut { get; set; } + [Export ("optOut", ArgumentSemantic.Assign)] + bool OptOut { get; set; } - [Export ("dispatchInterval")] - double DispatchInterval { get; set; } + [Export ("dispatchInterval", ArgumentSemantic.Assign)] + double DispatchInterval { get; set; } - [Export ("trackUncaughtExceptions")] - bool TrackUncaughtExceptions { get; set; } + [Export ("trackUncaughtExceptions", ArgumentSemantic.Assign)] + bool TrackUncaughtExceptions { get; set; } + + [Export ("dryRun", ArgumentSemantic.Assign)] + bool DryRun { get; set; } [Static] [Export ("sharedInstance")] GAI SharedInstance { get; } - [Internal] + [Export ("trackerWithName:trackingId:")] + IGAITracker Tracker (string name, string trackingId); + [Export ("trackerWithTrackingId:")] - IntPtr InternalGetTracker (string trackingId); + IGAITracker Tracker (string trackingId); + + [Export ("removeTrackerByName:")] + void RemoveTracker (string name); [Export ("dispatch")] void Dispatch (); + } + + [BaseType (typeof (NSObject))] + interface GAIDictionaryBuilder + { + [Export ("set:forKey:")] + GAIDictionaryBuilder Set (string value, string key); + + [Export ("setAll:")] + GAIDictionaryBuilder SetAll (NSDictionary parameters); + + [Export ("get:")] + string Get ([NullAllowed] string paramName); + + [Export ("build")] + NSMutableDictionary Build (); + + [Export ("setCampaignParametersFromUrl:")] + GAIDictionaryBuilder SetCampaignParameters (string urlString); + [Static] + [Export ("createAppView")] + GAIDictionaryBuilder CreateAppView (); + + [Static] + [Export ("createEventWithCategory:action:label:value:")] + GAIDictionaryBuilder CreateEvent ([NullAllowed] string category, [NullAllowed] string action, [NullAllowed] string label, [NullAllowed] NSNumber number); + + [Static] + [Export ("createExceptionWithDescription:withFatal:")] + GAIDictionaryBuilder CreateException ([NullAllowed] string description, [NullAllowed] NSNumber fatal); + + [Static] + [Export ("createItemWithTransactionId:name:sku:category:price:quantity:currencyCode:")] + GAIDictionaryBuilder CreateItem ([NullAllowed] string transactionId, [NullAllowed] string name, [NullAllowed] string sku, [NullAllowed] string category, [NullAllowed] NSNumber price, [NullAllowed] NSNumber quantity, [NullAllowed] string currencyCode); + + [Static] + [Export ("createSocialWithNetwork:action:target:")] + GAIDictionaryBuilder CreateSocial ([NullAllowed] string network, [NullAllowed] string action, [NullAllowed] string target); + + [Static] + [Export ("createTimingWithCategory:interval:name:label:")] + GAIDictionaryBuilder CreateTiming ([NullAllowed] string category, [NullAllowed] NSNumber intervalMillis, [NullAllowed] string name, [NullAllowed] string label); + + [Static] + [Export ("createTransactionWithId:affiliation:revenue:tax:shipping:currencyCode:")] + GAIDictionaryBuilder CreateTransaction ([NullAllowed] string transactionId, [NullAllowed] string affiliation, [NullAllowed] NSNumber revenue, [NullAllowed] NSNumber tax, [NullAllowed] NSNumber shipping, [NullAllowed] string currencyCode); } [BaseType (typeof (NSObject))] - [Protocol] - interface GAITracker { - [Export ("trackingId")] - string TrackingId { get; } + interface GAIFields + { + [Static] + [Export ("contentGroupForIndex:")] + string ContentGroup (uint index); - [Export ("appName")] - string AppName { get; set; } + [Static] + [Export ("customDimensionForIndex:")] + string CustomDimension (uint index); - [Export ("appId")] - string AppId { get; set; } + [Static] + [Export ("customMetricForIndex:")] + string CustomMetric (uint index); - [Export ("appVersion")] - string AppVersion { get; set; } + [Field ("GAITitle", "__Internal")] + NSString Title { get; } - [Export ("anonymize")] - bool Anonymize { get; set; } + [Field ("GAIAppName", "__Internal")] + NSString AppName { get; } - [Export ("useHttps")] - bool UseHttps { get; set; } + [Field ("GAIAppVersion", "__Internal")] + NSString AppVersion { get; } - [Export ("sampleRate")] - double SampleRate { get; set; } + [Field ("GAIAppId", "__Internal")] + NSString AppId { get; } - [Export ("clientId")] - string ClientId { get; } + [Field ("GAIAppInstallerId", "__Internal")] + NSString AppInstallerId { get; } - [Export ("appScreen")] - string AppScreen { get; set; } + [Field ("GAIEventCategory", "__Internal")] + NSString EventCategory { get; } - [Export ("referrerUrl")] - string ReferrerUrl { get; set; } + [Field ("GAIEventAction", "__Internal")] + NSString EventAction { get; } - [Export ("campaignUrl")] - string CampaignUrl { get; set; } + [Field ("GAIEventLabel", "__Internal")] + NSString EventLabel { get; } - [Export ("sessionStart")] - bool SessionStart { get; set; } + [Field ("GAIEventValue", "__Internal")] + NSString EventValue { get; } - [Export ("sessionTimeout")] - double SessionTimeout { get; set; } + [Field ("GAISocialNetwork", "__Internal")] + NSString SocialNetwork { get; } - [Export ("trackView")] - bool TrackView (); + [Field ("GAISocialAction", "__Internal")] + NSString SocialAction { get; } - [Export ("trackView:")] - bool TrackView (string screen); + [Field ("GAISocialTarget", "__Internal")] + NSString SocialTarget { get; } - [Export ("trackEventWithCategory:withAction:withLabel:withValue:")] - bool TrackEvent(string category, string action, string label, NSNumber value); + [Field ("GAITransactionId", "__Internal")] + NSString TransactionId { get; } - [Export ("trackTransaction:")] - bool TrackTransaction (GAITransaction transaction); + [Field ("GAITransactionAffiliation", "__Internal")] + NSString TransactionAffiliation { get; } - [Export ("trackException:withDescription:")] - bool TrackException (bool isFatal, string format ); + [Field ("GAITransactionRevenue", "__Internal")] + NSString TransactionRevenue { get; } - [Export ("trackException:withNSException:")] - bool TrackException (bool isFatal, NSException exception); + [Field ("GAITransactionShipping", "__Internal")] + NSString TransactionShipping { get; } - [Export ("trackException:withNSError:")] - bool TrackException (bool isFatal, NSError error); + [Field ("GAITransactionTax", "__Internal")] + NSString TransactionTax { get; } - [Export ("trackTimingWithCategory:withValue:withName:withLabel:")] - bool TrackTiming (string category, double time, string name, string label); + [Field ("GAICurrencyCode", "__Internal")] + NSString CurrencyCode { get; } - [Export ("trackSocial:withAction:withTarget:")] - bool TrackSocial (string network, string action, string target); + [Field ("GAIItemPrice", "__Internal")] + NSString ItemPrice { get; } - [Export ("set:value:")] - bool Setvalue (string parameterName, string value); + [Field ("GAIItemQuantity", "__Internal")] + NSString ItemQuantity { get; } - [Export ("get:")] - string Get (string parameterName); + [Field ("GAIItemSku", "__Internal")] + NSString ItemSku { get; } - [Export ("send:params:")] - bool Sendparams (string trackType, NSDictionary parameters); + [Field ("GAIItemName", "__Internal")] + NSString ItemName { get; } - [Export ("setCustom:dimension:")] - bool SetCustom (int index, string dimension); + [Field ("GAIItemCategory", "__Internal")] + NSString ItemCategory { get; } - [Export ("setCustom:metric:")] - bool SetCustom (int index, NSNumber metric); + [Field ("GAICampaignSource", "__Internal")] + NSString CampaignSource { get; } - [Export ("close")] - void Close (); + [Field ("GAICampaignMedium", "__Internal")] + NSString CampaignMedium { get; } - } - [BaseType (typeof (NSObject))] - interface GAITransaction { - [Export ("transactionId")] - string TransactionId { get; } + [Field ("GAICampaignName", "__Internal")] + NSString CampaignName { get; } - [Export ("affiliation")] - string Affiliation { get; } + [Field ("GAICampaignKeyword", "__Internal")] + NSString CampaignKeyword { get; } - [Export ("revenueMicros")] - long RevenueMicros { get; set; } + [Field ("GAICampaignContent", "__Internal")] + NSString CampaignContent { get; } - [Export ("taxMicros")] - long TaxMicros { get; set; } + [Field ("GAICampaignId", "__Internal")] + NSString CampaignId { get; } - [Export ("shippingMicros")] - long ShippingMicros { get; set; } + [Field ("GAITimingCategory", "__Internal")] + NSString TimingCategory { get; } - [Export ("items")] - GAITransactionItem[] Items { get; } + [Field ("GAITimingVar", "__Internal")] + NSString TimingVar { get; } - [Static] - [Export ("transactionWithId:withAffiliation:")] - GAITransaction TransactionFrom (string transactionId, string affiliation); + [Field ("GAITimingValue", "__Internal")] + NSString TimingValue { get; } + + [Field ("GAITimingLabel", "__Internal")] + NSString TimingLabel { get; } + + [Field ("GAIExDescription", "__Internal")] + NSString ExDescription { get; } + + [Field ("GAIExFatal", "__Internal")] + NSString ExFatal { get; } + + [Field ("GAISampleRate", "__Internal")] + NSString SampleRate { get; } + + [Field ("GAIAppView", "__Internal")] + NSString AppView { get; } + + [Field ("GAIEvent", "__Internal")] + NSString Event { get; } + + [Field ("GAISocial", "__Internal")] + NSString Social { get; } - [Export ("addItem:")] - void AddItem (GAITransactionItem item); + [Field ("GAITransaction", "__Internal")] + NSString Transaction { get; } - [Export ("addItemWithCode:name:category:priceMicros:quantity:")] - void AddItem (string productCode, string productName, string productCategory, long priceMicros, int quantity); + [Field ("GAIItem", "__Internal")] + NSString Item { get; } + [Field ("GAIException", "__Internal")] + NSString Exception { get; } + + [Field ("GAITiming", "__Internal")] + NSString Timing { get; } } + + interface IGAILogger { } + + [Protocol] + [Model] [BaseType (typeof (NSObject))] - interface GAITransactionItem { - [Export ("productCode")] - string ProductCode { get; } + interface GAILogger + { + [Abstract] + [Export ("logLevel", ArgumentSemantic.Assign)] + GAILogLevel LogLevel { get; set; } + + [Abstract] + [Export ("verbose:")] + void Verbose (string message); + + [Abstract] + [Export ("info:")] + void Info (string message); + + [Abstract] + [Export ("warning:")] + void Warning (string message); + + [Abstract] + [Export ("error:")] + void Error (string message); + } + + [BaseType (typeof (UIViewController))] + interface GAITrackedViewController + { + [Export ("tracker", ArgumentSemantic.Assign)] [NullAllowed] + IGAITracker Tracker { get; set; } - [Export ("productName")] - string ProductName { get; set; } + [Export ("screenName", ArgumentSemantic.Copy)] [NullAllowed] + string ScreenName { get; set; } + } - [Export ("productCategory")] - string ProductCategory { get; set; } + interface IGAITracker { } - [Export ("priceMicros")] - long PriceMicros { get; set; } + [Protocol] + [BaseType (typeof (NSObject))] + interface GAITracker + { + [Export ("name")] + string GetName (); - [Export ("quantity")] - int Quantity { get; set; } + [Export ("set:value:")] + void Set (string parameterName, [NullAllowed] string value); - [Static] - [Export ("itemWithCode:name:category:priceMicros:quantity:")] - GAITransactionItem ItemFrom (string productCode, string productName, string productCategory, long priceMicros, int quantity); + [Export ("get:")] + string Get ([NullAllowed] string parameterName); + [Export ("send:")] + void Send ([NullAllowed] NSDictionary parameters); } - } + diff --git a/GoogleAnalytics/binding/GoogleAnalytics.csproj b/GoogleAnalytics/binding/GoogleAnalytics.iOS.csproj similarity index 83% rename from GoogleAnalytics/binding/GoogleAnalytics.csproj rename to GoogleAnalytics/binding/GoogleAnalytics.iOS.csproj index f332e529..299f4df0 100644 --- a/GoogleAnalytics/binding/GoogleAnalytics.csproj +++ b/GoogleAnalytics/binding/GoogleAnalytics.iOS.csproj @@ -5,12 +5,12 @@ AnyCPU 10.0.0 2.0 - {427ECD83-C8EA-4F81-B499-6D07E4EBF026} + {AE398C43-341D-426C-8398-00D9BE560D6A} {F5B4F3BC-B597-4E2B-B552-EF5D8A32436F};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} Library - GoogleAnalytics + GoogleAnalytics.iOS Resources - GoogleAnalytics + GoogleAnalytics.iOS true @@ -47,12 +47,11 @@ - + - - libGoogleAnalytics.a + + libGoogleAnalyticsServices.a - \ No newline at end of file diff --git a/GoogleAnalytics/binding/Makefile b/GoogleAnalytics/binding/Makefile index a8d96f89..1810523f 100755 --- a/GoogleAnalytics/binding/Makefile +++ b/GoogleAnalytics/binding/Makefile @@ -4,32 +4,17 @@ SMCS=/Developer/MonoTouch/usr/bin/smcs CLANG=clang -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk MONOXBUILD=/Library/Frameworks/Mono.framework/Commands/xbuild -all: GoogleAnalytics.dll +all: GoogleAnalytics.iOS.dll -GoogleAnalyticsiOS_2.0beta4.zip: - curl -O http://dl.google.com/dl/gaformobileapps/GoogleAnalyticsiOS_2.0beta4.zip +GoogleAnalyticsServicesiOS_3.02.zip: + curl -O http://dl.google.com/googleanalyticsservices/GoogleAnalyticsServicesiOS_3.02.zip -#STUBS = armv6.o armv7.o i386.o -# -#armv6.o: stub.m -# $(CLANG) -c -arch armv6 stub.m -o armv6.o -# -#armv7.o: stub.m -# $(CLANG) -c -arch armv7 stub.m -o armv7.o -# -#i386.o: stub.m Makefile -# clang -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk -fobjc-abi-version=2 -fobjc-legacy-dispatch -c -arch i386 stub.m -o i386.o +libGoogleAnalyticsServices.a: GoogleAnalyticsServicesiOS_3.02.zip + unzip -p $< 'GoogleAnalyticsServicesiOS_3.02/libGoogleAnalyticsServices.a' > $@ - -libGoogleAnalytics.a: GoogleAnalyticsiOS_2.0beta4.zip - unzip -p $< 'GoogleAnalyticsiOS_2.0beta4/Library/libGoogleAnalytics.a' > $@ - -GoogleAnalytics.dll: Makefile ApiDefinition.cs StructsAndEnums.cs extras.cs libGoogleAnalytics.a - $(MONOXBUILD) /p:Configuration=Release GoogleAnalytics.csproj - cp bin/Release/GoogleAnalytics.dll GoogleAnalytics.dll - #-mkdir -p ios - #$(BTOUCH) --out=$@ -e googleanalytics.cs enums.cs --sourceonly=list --tmpdir=ios - #$(SMCS) $(BUILD_FLAGS) -out:$@ @list enums.cs extras.cs AssemblyInfo.cs -r:monotouch.dll -res:libGoogleAnalytics.a,libGoogleAnalytics.a +GoogleAnalytics.iOS.dll: Makefile ApiDefinition.cs StructsAndEnums.cs libGoogleAnalyticsServices.a + $(MONOXBUILD) /p:Configuration=Release GoogleAnalytics.iOS.csproj + cp bin/Release/GoogleAnalytics.iOS.dll GoogleAnalytics.iOS.dll clean: -rm -rf list ios *.a *.dll *.o *.zip bin/ obj/ diff --git a/GoogleAnalytics/binding/StructsAndEnums.cs b/GoogleAnalytics/binding/StructsAndEnums.cs index d828cae9..561f4704 100644 --- a/GoogleAnalytics/binding/StructsAndEnums.cs +++ b/GoogleAnalytics/binding/StructsAndEnums.cs @@ -1,14 +1,21 @@ -namespace GoogleAnalytics { +using System; - public enum GAIErrorCode { - // This error code indicates that there was no error. Never used. +namespace GoogleAnalytics.iOS +{ + public enum GAIErrorCode + { NoError = 0, - - // This error code indicates that there was a database-related error. DatabaseError, + NetworkError + } - // This error code indicates that there was a network-related error. - NetworkError, + public enum GAILogLevel : uint + { + None = 0, + Error = 1, + Warning = 2, + Info = 3, + Verbose = 4 } +} -} \ No newline at end of file diff --git a/GoogleAnalytics/binding/extras.cs b/GoogleAnalytics/binding/extras.cs deleted file mode 100644 index ae2ea67f..00000000 --- a/GoogleAnalytics/binding/extras.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; - -namespace GoogleAnalytics { - - public partial class GAI - { - public GAITracker DefaultTracker { - get { - return new GAITracker (InternalDefaultTracker); - } - } - - public GAITracker GetTracker(string trackingId) { - return new GAITracker (InternalGetTracker(trackingId)); - } - } - -} \ No newline at end of file diff --git a/GoogleAnalytics/binding/libGoogleAnalytics.linkwith.cs b/GoogleAnalytics/binding/libGoogleAnalytics.linkwith.cs deleted file mode 100644 index 3b7ad106..00000000 --- a/GoogleAnalytics/binding/libGoogleAnalytics.linkwith.cs +++ /dev/null @@ -1,4 +0,0 @@ -using System; -using MonoTouch.ObjCRuntime; - -[assembly: LinkWith ("libGoogleAnalytics.a", LinkTarget.ArmV7 | LinkTarget.ArmV7s | LinkTarget.Simulator, ForceLoad = true, Frameworks = "SystemConfiguration CFNetwork CoreData")] diff --git a/GoogleAnalytics/binding/libGoogleAnalyticsServices.linkwith.cs b/GoogleAnalytics/binding/libGoogleAnalyticsServices.linkwith.cs new file mode 100644 index 00000000..800468f9 --- /dev/null +++ b/GoogleAnalytics/binding/libGoogleAnalyticsServices.linkwith.cs @@ -0,0 +1,50 @@ +using System; +using MonoTouch.ObjCRuntime; + +[assembly: LinkWith ("libGoogleAnalyticsServices.a", LinkTarget.ArmV7 | LinkTarget.ArmV7s | LinkTarget.Simulator, Frameworks = "CoreData SystemConfiguration AdSupport", SmartLink = true, ForceLoad = true, LinkerFlags = "-lz -lsqlite3.0 " + + "-Xlinker -alias -Xlinker _kGAIProduct -Xlinker _GAIProduct " + + "-Xlinker -alias -Xlinker _kGAIVersion -Xlinker _GAIVersion " + + "-Xlinker -alias -Xlinker _kGAIErrorDomain -Xlinker _GAIErrorDomain " + + "-Xlinker -alias -Xlinker _kGAITitle -Xlinker _GAITitle " + + "-Xlinker -alias -Xlinker _kGAIAppName -Xlinker _GAIAppName " + + "-Xlinker -alias -Xlinker _kGAIAppVersion -Xlinker _GAIAppVersion " + + "-Xlinker -alias -Xlinker _kGAIAppId -Xlinker _GAIAppId " + + "-Xlinker -alias -Xlinker _kGAIAppInstallerId -Xlinker _GAIAppInstallerId " + + "-Xlinker -alias -Xlinker _kGAIEventCategory -Xlinker _GAIEventCategory " + + "-Xlinker -alias -Xlinker _kGAIEventAction -Xlinker _GAIEventAction " + + "-Xlinker -alias -Xlinker _kGAIEventLabel -Xlinker _GAIEventLabel " + + "-Xlinker -alias -Xlinker _kGAIEventValue -Xlinker _GAIEventValue " + + "-Xlinker -alias -Xlinker _kGAISocialNetwork -Xlinker _GAISocialNetwork " + + "-Xlinker -alias -Xlinker _kGAISocialAction -Xlinker _GAISocialAction " + + "-Xlinker -alias -Xlinker _kGAISocialTarget -Xlinker _GAISocialTarget " + + "-Xlinker -alias -Xlinker _kGAITransactionId -Xlinker _GAITransactionId " + + "-Xlinker -alias -Xlinker _kGAITransactionAffiliation -Xlinker _GAITransactionAffiliation " + + "-Xlinker -alias -Xlinker _kGAITransactionRevenue -Xlinker _GAITransactionRevenue " + + "-Xlinker -alias -Xlinker _kGAITransactionShipping -Xlinker _GAITransactionShipping " + + "-Xlinker -alias -Xlinker _kGAITransactionTax -Xlinker _GAITransactionTax " + + "-Xlinker -alias -Xlinker _kGAICurrencyCode -Xlinker _GAICurrencyCode " + + "-Xlinker -alias -Xlinker _kGAIItemPrice -Xlinker _GAIItemPrice " + + "-Xlinker -alias -Xlinker _kGAIItemQuantity -Xlinker _GAIItemQuantity " + + "-Xlinker -alias -Xlinker _kGAIItemSku -Xlinker _GAIItemSku " + + "-Xlinker -alias -Xlinker _kGAIItemName -Xlinker _GAIItemName " + + "-Xlinker -alias -Xlinker _kGAIItemCategory -Xlinker _GAIItemCategory " + + "-Xlinker -alias -Xlinker _kGAICampaignSource -Xlinker _GAICampaignSource " + + "-Xlinker -alias -Xlinker _kGAICampaignMedium -Xlinker _GAICampaignMedium " + + "-Xlinker -alias -Xlinker _kGAICampaignName -Xlinker _GAICampaignName " + + "-Xlinker -alias -Xlinker _kGAICampaignKeyword -Xlinker _GAICampaignKeyword " + + "-Xlinker -alias -Xlinker _kGAICampaignContent -Xlinker _GAICampaignContent " + + "-Xlinker -alias -Xlinker _kGAICampaignId -Xlinker _GAICampaignId " + + "-Xlinker -alias -Xlinker _kGAITimingCategory -Xlinker _GAITimingCategory " + + "-Xlinker -alias -Xlinker _kGAITimingVar -Xlinker _GAITimingVar " + + "-Xlinker -alias -Xlinker _kGAITimingValue -Xlinker _GAITimingValue " + + "-Xlinker -alias -Xlinker _kGAITimingLabel -Xlinker _GAITimingLabel " + + "-Xlinker -alias -Xlinker _kGAIExDescription -Xlinker _GAIExDescription " + + "-Xlinker -alias -Xlinker _kGAIExFatal -Xlinker _GAIExFatal " + + "-Xlinker -alias -Xlinker _kGAISampleRate -Xlinker _GAISampleRate " + + "-Xlinker -alias -Xlinker _kGAIAppView -Xlinker _GAIAppView " + + "-Xlinker -alias -Xlinker _kGAIEvent -Xlinker _GAIEvent " + + "-Xlinker -alias -Xlinker _kGAISocial -Xlinker _GAISocial " + + "-Xlinker -alias -Xlinker _kGAITransaction -Xlinker _GAITransaction " + + "-Xlinker -alias -Xlinker _kGAIItem -Xlinker _GAIItem " + + "-Xlinker -alias -Xlinker _kGAIException -Xlinker _GAIException " + + "-Xlinker -alias -Xlinker _kGAITiming -Xlinker _GAITiming")]