it-swarm.com.de

Verwendung des nicht aufgelösten Bezeichners GGLContext und GAI

Ich habe ein bisschen Ärger. Ich versuche, Google Analytics in einer App zu installieren, und bekomme ständig die Verwendung des nicht aufgelösten Bezeichners GGLContext und GAI. Ich erhalte die gleiche Fehlermeldung, ob ich CocoaPods verwende oder nicht. Der Ort des Fehlers befindet sich im AppDelegate.Swift hier:

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
}

In den AppDelegate.Swift (wie z. B. Google) kann nichts zusätzliches importiert werden, nur der Standard UIKit.

Ich habe viele Tutorials und andere SO - Fragen durchlaufen, alles erfolglos. Ich schätze, dass es etwas gibt, was ich vermisse, aber es nicht finden kann.

Was ich getan habe:

Ich habe die .h-Dateien in meinem Projekt, zusammen mit libGoogleAnalyticsServices.a, libsqlite3.0.tbd, libz.tbd, libsqlite3.tbd (alle wurden mit der Bibliothek sowie CoreData und SystemConfiguration verknüpft).

Sie können das Layout all dieser Dateien hier sehen:

 enter image description here

und hier:

 enter image description here

Ich habe den -Bridging-Header.h erstellt und diese .h-Importe darin aufgenommen.

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

Der -Bridging-Header.h ist in den Build-Einstellungen verlinkt, und ich erhalte damit keine Fehler. Das ist die Hauptlösung, die ich in meiner Forschung gefunden habe, was mir in dieser Situation nicht weitergeholfen hat.

Ich habe versucht, zweimal mit CocoaPods und ohne von vorne anzufangen (ich habe vor dem Start eine Kopie meines Projekts angefertigt) und erhielt jedes Mal die gleiche Fehlermeldung.

Jede Hilfe wäre sicherlich dankbar. Danke im Voraus.

23

Nun, es sieht so aus, als hätte ich es schaffen können.

Bei allen Versuchen gab es mehrere Probleme.

  1. Kokosapoden waren nicht korrekt installiert. Ich habe neu installiert und hatte dann einen besseren Erfolg beim Importieren der korrekten Dateien.

  2. Es ist nicht die beste Option, es manuell zu tun, wie ich es oben geschrieben habe.

  3. Nach der Neuinstallation der Cocoapods und dem Neustart einer neuen Kopie meines Projekts konnte ich import Google in meinen AppDelegate.Swift.

Wichtige Punkte für diejenigen, die in demselben Boot landen können, in dem ich war:

  • Stellen Sie sicher, dass Sie das richtige Verzeichnis für Ihren -Bridging-Header.h angeben. Sie finden diese unter Projekt - Build-Einstellungen - Swift-Compiler-Code-Generierung. Verwenden Sie diese Option, um Ihre Header-Datei einfach als Ziel festzulegen $(Swift_MODULE_NAME)-Bridging-Header.h

  • Importieren Sie die Dateien in Ihrem -Bridging-Header.h nicht #import <Google/Analytics.h>, sondern importieren Sie sie einzeln. Hier ist ein Bild der Dateien, die importiert werden können.

 enter image description here

  • Wenn Sie Zweifel haben, installieren Sie Cocoapods erneut

  • Vertrauen Sie nicht auf Google-Tutorials, um die effektivste Anweisung bereitzustellen und die vielen SO -Postings zu diesem Thema zu verwenden.

Ich hoffe wirklich, dass dies jemandem hilft, nicht 10 Stunden mit dem Problem zu verbringen, wie ich es habe.

16

Swift 4.0 und Xcode 9.0.1 habe ich endlich gelöst.

Für mich nach 2 Tagen habe ich mich entschlossen. Folgen Sie nicht der alten Dokumentation von Google, die sagt #import <Google/Analytics.h>

  1. Gehen Sie zu Terminaltyp pod init
  2. Öffnen Sie das Projekt erneut als Arbeitsbereich, nachdem der Pod-Arbeitsbereich erstellt wurde. Öffnen Sie die Pod-Datei. schreibe pod 'GoogleAnalytics' in deine Pod-Datei bevor target 'GoogleAnalytics' do
  3. Gehen Sie zurück zu Terminal pod install, Dort finden Sie Frameworks GAI.h Und andere Dateien befinden sich im Ordner pods
  4. Erstellen Sie eine Header.h - Datei in Ihrem Stammverzeichnis. Fügen Sie nicht #import <Google/Analytics.h> hinzu, sondern importieren Sie die folgenden Elemente einzeln in die Überbrückungsheaderdatei

z.B. in der Überbrückungsheaderdatei entfernen #import <Google/Analytics.h>

#import GAI.h
#import "GAITracker.h"
#import "GAIFields.h"
#import "GAIDictionaryBuilder.h"
  1. Zeigen Sie auf Ihre Bridge unter Build Settings for target Swift Compiler - General -> Objective-C Bridging Header. Schreiben Sie Header.h In den Namen Ihrer Bridging-Datei

  2. Fügen Sie Code von Google für Swift zu didFinishLaunchingWithOptions Vergessen Sie nicht, Ihre Tracking-ID von der Google Analytics-Seite zu ersetzen hinzu

        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 .... Führen Sie Ihr Projekt aus ...

13
karan

Mein Fehler war die Verwendung eines nicht aufgelösten Bezeichners, als ich den Singleton GAI.sharedInstance() verwendete.

Meine Schritte, um dies in die Tat umzusetzen, waren:

  1. pod 'Google/Analytics' hinzufügen
  2. pod installieren
  3. xcode neu starten
  4. erstellen Sie in meinem Projekt eine Objc-Klasse, um einen Überbrückungsheader zu erhalten
  5. #import "GAI.h" wurde der Bridging-Header-Datei hinzugefügt

alles funktioniert perfekt.

9
dan

Dies funktioniert für Swift 2.3, Swift 3.0 und Swift 4:

  1. fügen Sie die GoogleService-Info.plist-Datei zum Stamm Ihres Projekts hinzu
  2. füge dies der podfile hinzu: 

      pod 'Google/Analytics'
    
  3. xcode beenden, "Pod-Installation" im Terminal ausführen und Xcode erneut öffnen
  4. erstellen Sie im Projektstamm eine Header-Datei mit dem Namen Bridging-Header.h. Stellen Sie unter Build-Einstellungen sicher, dass der Bridging-Header wie im Bild definiert ist enter image description here

  5. stellen Sie sicher, dass Ihre Bridging-Header.h so aussieht: 

      #ifndef Bridging_Header_h
      #define Bridging_Header_h
      #import <Google/Analytics.h> 
      #endif /* Bridging_Header_h */
    
  6. zu AppDelegate hinzufügen:

    import Google        
    
  7. fügen Sie diesen Code zu AppDelegate in der Methode didFinishLaunchingWithOptions hinzu: 

    // 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
    

Wenn es Fehler gibt, kann das Löschen von DerivedData und das Bereinigen des Projekts hilfreich sein.

9
DevB2F

Die einzige Möglichkeit, dies für mich zum Laufen zu bringen, bestand darin, die Google Analytics-Pod-Version auf 2.0.4 herunterzustufen.

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

0
user2477512