web-dev-qa-db-ja.com

未解決の識別子GGLContextおよびGAIの使用

ちょっとしたトラブルがあります。 Googleアナリティクスをアプリにインストールしようとしていますが、未解決の識別子GGLContextおよびGAIエラーが一貫して使用されています。 CocoaPodsを使用しているかどうかにかかわらず、同じエラーを受け取ります。エラーの場所は次のAppDelegate.Swiftにあります。

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
}

AppDelegate.Swift(Googleなど)に追加できるものは何もありません。標準のUIKitだけをインポートできます。

私は多くのチュートリアルや他のSO質問、すべて役に立たなかった。

私がやったこと:

プロジェクトに.hファイルとlibGoogleAnalyticsServices.alibsqlite3.0.tbdlibz.tbdlibsqlite3.tbdがあります(これらはすべてライブラリにリンクされているだけでなく、 CoreDataおよびSystemConfiguration)。

これらすべてのファイルのレイアウトは、ここで確認できます。

enter image description here

そしてここ:

enter image description here

-Bridging-Header.hを作成し、これらの.hインポートを含めました。

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

-Bridging-Header.hはビルド設定にリンクされており、エラーは表示されません。それが私の研究中に見つけた主な解決策ですが、この状況では私を助けませんでした。

CocoaPodsを使用して、または使用せずに(開始前にプロジェクトのコピーを作成しました)、ゼロから最初からやり直そうとしましたが、毎回同じエラーを受け取りました。

どんな助けも確かにありがたいです。前もって感謝します。

25

さて、私はそれを取り除けたようです。

これに関するすべての試みにはいくつかの問題がありました。

  1. Cocoapodsが正しくインストールされていませんでした。再インストールしてから、正しいファイルのインポートが成功しました。

  2. 上記で投稿したように、手動で行うことは最良の選択肢ではありません。

  3. Cocoapodsを再インストールし、プロジェクトの新しいコピーからやり直した後、_import Google_を_AppDelegate.Swift_に入れることができました。

私がいた同じ船に乗り込むかもしれない人々のためのキーポイント:

  • _-Bridging-Header.h_の正しいディレクトリを必ず追加してください。これは、プロジェクト-ビルド設定-Swiftコンパイラコード生成。これを使用して、ヘッダーファイル$(Swift_MODULE_NAME)-Bridging-Header.hを簡単にターゲットにできます。

  • _-Bridging-Header.h_では、_#import <Google/Analytics.h>_ではなく、ファイルを個別にインポートします。インポート可能なファイルの画像を次に示します。

enter image description here

  • 疑わしい場合は、Cocoapodsを再インストールしてください

  • Googleチュートリアルを信頼して、最も効果的な指示を提供し、トピックに関する多くのSO投稿を利用してください。

これが、私のように誰かが問題に10時間を費やさないようにすることを本当に願っています。

16

Swift 4.0およびxcode 9.0.1は最終的に解決しました。

2日後の私にとっては解決しました。Googleの古いドキュメント「#import <Google/Analytics.h>」に従ってください

  1. ターミナルタイプpod initに移動します
  2. ポッドワークスペースが作成された後、プロジェクトをワークスペースとして再度開き、ポッドファイルを開きます。 pod 'GoogleAnalytics'の前にtarget 'GoogleAnalytics' doをPodファイルに書き込みます
  3. ターミナルpod installに戻ります。フレームワークGAI.hがあり、その他のファイルはpodsフォルダーの下にあります。
  4. Header.hファイルをルートに作成します。 _#import <Google/Analytics.h>を追加せず、代わりにブリッジングヘッダーファイルに個別に以下をインポートします

例えばブリッジングヘッダーファイルの削除#import <Google/Analytics.h>

#import GAI.h
#import "GAITracker.h"
#import "GAIFields.h"
#import "GAIDictionaryBuilder.h"
  1. ターゲットのビルド設定でブリッジを指定しますSwiftコンパイラ-一般-> Objective-Cブリッジングヘッダー。書き込みブリッジングファイル名のHeader.h]

  2. Swift to didFinishLaunchingWithOptionsにgoogleからコードを追加しますGoogleアナリティクスページのトラッキングIDを置き換えることを忘れないでください

        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;
    

多田....プロジェクトを実行...

13
karan

私のエラーは、シングルトンGAI.sharedInstance()を使用していたときの未解決の識別子の使用でした。

これを機能させるための私の手順は次のとおりです。

  1. pod 'Google/Analytics'を追加
  2. ポッドインストール
  3. xcodeを再起動する
  4. プロジェクトでobjcクラスを作成して、ブリッジングヘッダーを取得します
  5. #import "GAI.h"をブリッジングヘッダーファイルに追加しました

すべてが完璧に機能します。

9
dan

これはSwift 2.3、Swift 3.0およびSwift 4:

  1. googleService-Info.plistファイルをプロジェクトのルートに追加します
  2. これをポッドファイルに追加します:

      pod 'Google/Analytics'
    
  3. xcodeを終了し、ターミナルで「pod install」を実行し、Xcodeを再度開きます
  4. ビルド設定の下で、Bridging-Header.hという名前のプロジェクトルートにヘッダーファイルを作成し、ブリッジヘッダーが図のように定義されていることを確認します enter image description here

  5. bridging-Header.hが次のようになっていることを確認してください。

      #ifndef Bridging_Header_h
      #define Bridging_Header_h
      #import <Google/Analytics.h> 
      #endif /* Bridging_Header_h */
    
  6. appDelegateに追加します。

    import Google        
    
  7. didFinishLaunchingWithOptionsメソッドでこのコードをAppDelegateに追加します。

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

エラーがある場合は、DerivedDataを削除してプロジェクトをクリーンアップすると役立ちます。

9
DevB2F

動作させる唯一の方法は、Google Analyticsポッドバージョンを2.0.4にダウングレードすることでした。

ポッド「Google/Analytics」、「〜> 2.0.4」

0
user2477512