web-dev-qa-db-fra.com

Utilisation des identifiants non résolus GGLContext et GAI

J'ai un peu de mal. J'essaie d'installer Google Analytics dans une application et j'obtiens systématiquement l'utilisation de l'identificateur non résolu GGLContext et GAI error. Je reçois la même erreur si j'utilise CocoaPods ou non. L'emplacement de l'erreur est dans le AppDelegate.Swift ici:

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
}

Rien d’autre ne peut être importé dans le AppDelegate.Swift (tel que Google), mais seulement la UIKit standard.

J'ai parcouru de nombreux tutoriels et autres SO questions, sans succès. Je suppose qu'il me manque quelque chose, mais que je ne le trouve pas.

Ce que j'ai fait:

J'ai les fichiers .h dans mon projet, avec libGoogleAnalyticsServices.a, libsqlite3.0.tbd, libz.tbd, libsqlite3.tbd (qui ont tous été liés à la bibliothèque ainsi qu'à CoreData et SystemConfiguration).

Vous pouvez voir la disposition de tous ces fichiers ici:

 enter image description here

et ici:

 enter image description here

J'ai créé le -Bridging-Header.h et inclus ces importations .h dans celui-ci.

#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"

Le -Bridging-Header.h est lié dans les paramètres de construction et je ne reçois aucune erreur avec cela. C’est la solution principale que j’ai trouvée au cours de mes recherches et qui ne m’a pas aidé dans cette situation.

J'ai essayé de recommencer deux fois à partir de zéro avec CocoaPods et sans (j'ai fait une copie de mon projet avant de commencer) et j'ai reçu la même erreur à chaque fois.

Toute aide serait certainement appréciée. Merci d'avance.

23
Matthew Bradshaw

Eh bien, il semblerait que j’ai réussi à l’équilibrer.

Il y avait plusieurs problèmes avec toutes les tentatives à ce sujet.

  1. Cocoapods ne s’était pas installé correctement. J'ai réinstallé et puis eu mieux réussi à importer les fichiers corrects.

  2. Le faire manuellement, comme je l’ai signalé plus haut, n’est pas la meilleure option.

  3. Après la réinstallation des Cocoapods et le redémarrage à partir d’une nouvelle copie de mon projet, j’ai pu import Google dans mon AppDelegate.Swift.

Points clés pour ceux qui pourraient se retrouver dans le même bateau que j'étais dans:

  • Assurez-vous d’ajouter le bon répertoire pour votre -Bridging-Header.h. Vous pouvez le trouver sous Projet - Paramètres de construction - Génération du code du compilateur Swift. Utilisez-le pour cibler facilement votre fichier d'en-tête $(Swift_MODULE_NAME)-Bridging-Header.h

  • Dans votre -Bridging-Header.h, ne pas #import <Google/Analytics.h>, importez les fichiers individuellement. Voici une image des fichiers pouvant être importés.

 enter image description here

  • En cas de doute, réinstallez Cocoapods

  • Ne faites pas confiance aux didacticiels de Google pour fournir les instructions les plus efficaces et utilisez les nombreux SO messages sur le sujet.

J'espère vraiment que cela aidera quelqu'un à ne pas consacrer 10 heures au problème comme je l'ai fait.

16
Matthew Bradshaw

Swift 4.0 et xcode 9.0.1 enfin j'ai résolu.

Pour moi après 2 jours, j'ai résolu .. Ne suivez pas l'ancienne documentation de Google: #import <Google/Analytics.h>

  1. Aller au type de terminal pod init
  2. Rouvrez le projet en tant qu'espace de travail évident après la création de l'espace de travail du pod, ouvrez le podfile. écrivez pod 'GoogleAnalytics' dans votre fichier pod avant le target 'GoogleAnalytics' do
  3. Retournez à Terminal pod install vous trouverez les frameworks GAI.h et les autres fichiers seront là sous le dossier pods
  4. Créez le fichier Header.h à la racine.Ne pas ajouter #import <Google/Analytics.h>au lieu d'importer en suivant individuellement dans le fichier d'en-tête de pontage

par exemple. dans le fichier d'en-tête de pontage, supprimez #import <Google/Analytics.h>

#import GAI.h
#import "GAITracker.h"
#import "GAIFields.h"
#import "GAIDictionaryBuilder.h"
  1. Pointez votre pont sous Paramètres de construction du compilateur Swift cible - Général -> En-tête de pontage Objective-C. écrivez Header.h de votre nom de fichier de pontage

  2. Ajoutez le code de google pour Swift à la didFinishLaunchingWithOptions N'oubliez pas de remplacer votre identifiant de suivi depuis la page Google Analytics

        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 .... Lancez votre projet ... 

10
karan

Mon erreur était l'utilisation d'identifiant non résolu quand j'utilisais le singleton GAI.sharedInstance().

Mes démarches pour que cela fonctionne sont les suivantes:

  1. ajouter pod 'Google/Analytics'
  2. installation de pod
  3. redémarrer xcode
  4. créer une classe objc dans mon projet pour obtenir un en-tête de pontage
  5. ajouté #import "GAI.h" dans le fichier d'en-tête de pontage

tout fonctionne parfaitement.

9
dan

Cela fonctionne pour Swift 2.3, Swift 3.0 et Swift 4:

  1. ajoutez le fichier GoogleService-Info.plist à la racine de votre projet
  2. ajoutez ceci au podfile: 

      pod 'Google/Analytics'
    
  3. quittez Xcode, lancez "pod install" dans le terminal et ouvrez Xcode à nouveau
  4. créez un fichier d’en-tête à la racine du projet, nommé Bridging-Header.h, sous les paramètres de construction, assurez-vous que l’en-tête de pontage est défini comme dans l’image enter image description here

  5. assurez-vous que votre Bridging-Header.h ressemble à ceci: 

      #ifndef Bridging_Header_h
      #define Bridging_Header_h
      #import <Google/Analytics.h> 
      #endif /* Bridging_Header_h */
    
  6. ajouter à AppDelegate:

    import Google        
    
  7. ajoutez ce code à AppDelegate dans la méthode 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
    

S'il y a des erreurs, la suppression de DerivedData et le nettoyage du projet peuvent aider.

9
DevB2F

Le seul moyen de le faire fonctionner pour moi était de rétrograder la version du pod de Google Analytics à la version 2.0.4.

pod 'Google/Analytics', '~> 2.0.4'

0
user2477512