xcode - gratis - google analytics ios
Uso del identificador no resuelto GGLContext y GAI (5)
Estoy teniendo un poco de problemas. Estoy intentando instalar Google Analytics en una aplicación y constantemente GGLContext
el uso del identificador no resuelto GGLContext
y el error GAI
. Recibo el mismo error si estoy usando CocoaPods o no. La ubicación del error está en el AppDelegate.swift
aquí:
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
}
No se puede importar nada adicional al AppDelegate.swift
(como Google), solo el UIKit
estándar.
He pasado por muchos tutoriales y otras preguntas de SO, todo en vano. Me imagino que hay una pequeña cosa que me falta, pero no puedo encontrarla.
Qué he hecho:
Tengo los archivos .h
en mi proyecto, junto con libGoogleAnalyticsServices.a
, libsqlite3.0.tbd
, libz.tbd
, libsqlite3.tbd
(todos los cuales se han vinculado a la biblioteca, así como CoreData y SystemConfiguration).
Puedes ver el diseño de todos estos archivos aquí:
y aquí:
He creado el -Bridging-Header.h
e -Bridging-Header.h
estas importaciones .h
en él.
#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"
El -Bridging-Header.h
está vinculado en la configuración de compilación y no recibo ningún error con eso. Esa es la solución principal que he encontrado durante mi investigación, que no me ha ayudado en esta situación.
He intentado comenzar de cero dos veces con CocoaPods y sin (hice una copia de mi proyecto antes de comenzar) y recibí el mismo error cada vez.
Cualquier ayuda sin duda sería apreciada. Gracias por adelantado.
Bueno, parece que pude cuadrarlo.
Hubo varios problemas con todos los intentos en esto.
Cocoapods no se había instalado correctamente. Reinstalé y tuve más éxito al importar los archivos correctos.
Hacerlo manualmente, como he publicado anteriormente, no es la mejor opción.
Después de que los Cocoapods se reinstalen y vuelvan a comenzar desde una copia nueva de mi proyecto, pude
import Google
en miAppDelegate.swift
.
Puntos clave para aquellos que pueden terminar en el mismo barco en el que estaba:
Asegúrese de agregar el directorio correcto para su
-Bridging-Header.h
. Puede encontrar esto en Proyecto - Configuraciones de compilación - Generación de código Swift Compiler. Use esto para apuntar fácilmente a su archivo de encabezado$(SWIFT_MODULE_NAME)-Bridging-Header.h
En su
-Bridging-Header.h
, no#import <Google/Analytics.h>
, importe los archivos individualmente. Aquí hay una imagen de los archivos disponibles para ser importados.
En caso de duda, reinstalar Cocoapods.
No confíe en los tutoriales de Google para proporcionar la instrucción más efectiva y utilizar las numerosas publicaciones de SO sobre el tema.
Realmente espero que esto ayude a alguien a no pasar 10 horas en el problema como lo he hecho.
Esto funciona tanto para Swift 2.3 como para Swift 3.0:
- agregue el archivo GoogleService-Info.plist a la raíz de su proyecto
agregue esto al archivo pod:
pod ''Google/Analytics''
- salga de Xcode, ejecute "pod install" en el terminal y abra Xcode de nuevo
cree un archivo de encabezado en la raíz del proyecto, llamado Bridging-Header.h, en la configuración de compilación, asegúrese de que el encabezado de puente esté definido como en la imagen
asegúrese de que su Bridging-Header.h se vea así:
#ifndef Bridging_Header_h #define Bridging_Header_h #import <Google/Analytics.h> #endif /* Bridging_Header_h */
añadir a AppDelegate:
import Google
agregue este código a AppDelegate en el método didFinishLaunchingWithOptions:
// 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
Si hay errores, eliminar DerivedData y limpiar el proyecto puede ayudar.
La única manera de hacer que funcionara para mí era rebajar la versión del pod de Google Analytics a 2.0.4.
pod ''Google / Analytics'', ''~> 2.0.4''
Mi error fue el uso de un identificador no resuelto cuando estaba usando el singleton GAI.sharedInstance()
.
Mis pasos para llevar esto al trabajo fueron:
- añadir
pod ''Google/Analytics''
- instalación de la vaina
- reiniciar xcode
- crear una clase objc en mi proyecto para obtener un encabezado puente
- se agregó
#import "GAI.h"
en el archivo de encabezado de puente
Todo funciona perfectamente.
Swift 4.0 y xcode 9.0.1 finalmente resolví.
Para mí, después de 2 días resolví ... No siga la documentación anterior de Google, dice #import <Google/Analytics.h>
- Ir a la terminal tipo
pod init
- Volver a abrir el proyecto como espacio de trabajo obvio después de crear el espacio de trabajo del pod, abrir podfile. escriba el
pod ''GoogleAnalytics''
en su archivo de pod antestarget ''GoogleAnalytics'' do
- Regrese a la
pod install
GAI.h
Terminal, encontrará los marcosGAI.h
y otros archivos allí debajo de la carpeta de pods - Cree el archivo
Header.h
en su raíz. No agregue#import <Google/Analytics.h>
lugar de importar individualmente en el archivo de encabezado de puente
por ejemplo, en el archivo de cabecera de puente eliminar #import <Google/Analytics.h>
#import GAI.h
#import "GAITracker.h"
#import "GAIFields.h"
#import "GAIDictionaryBuilder.h"
Apunte su puente en Configuración de compilación para el compilador Swift de destino - General -> Objective-C Bridging Header. escriba
Header.h
de su nombre de archivo de puenteAgregue código de google para swift a
didFinishLaunchingWithOptions
No olvide reemplazar su ID de seguimiento desde la página de Google Analyticsguard 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 .... Ejecuta tu proyecto ...