簡體   English   中英

Google Analytics不適用於iOS

[英]Google Analytics doesn't work in iOS

我在Google Analytics帳戶中的配置:

在此輸入圖像描述

我的代碼:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    GAI *gai = [GAI sharedInstance];
    //gai.optOut = YES;
    gai.trackUncaughtExceptions = YES;  // report uncaught exceptions
    gai.logger.logLevel = kGAILogLevelVerbose;  // remove before app release
    [[GAI sharedInstance] setDispatchInterval:10.0];
    [[GAI sharedInstance] trackerWithTrackingId:@"UA-xxxxxx-3"];

    return YES;
}

在視圖控制器中:

  • (void)viewWillAppear:(BOOL)animated {[super viewWillAppear:animated];

     id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; [tracker set:kGAIScreenName value:@"Detail Screen"]; [[GAI sharedInstance].defaultTracker send:[[GAIDictionaryBuilder createScreenView] build]]; 

    }

它確實在我的控制台中顯示:

2015-06-24 15:03:36.592 GoogleAnalyticsDemoiOS[9540:264576] VERBOSE: GoogleAnalytics 3.12 +[GAITrackerModel initialize] (GAITrackerModel.m:88): idfa class missing, won't collect idfa
2015-06-24 15:03:36.619 GoogleAnalyticsDemoiOS[9540:264576] INFO: GoogleAnalytics 3.12 -[GAIReachabilityChecker reachabilityFlagsChanged:] (GAIReachabilityChecker.m:159): Reachability flags update: 0X000002
2015-06-24 15:03:36.644 GoogleAnalyticsDemoiOS[9540:264684] VERBOSE: GoogleAnalytics 3.12 -[GAIBatchingDispatcher persist:] (GAIBatchingDispatcher.m:517): Saved hit: {
    parameters =     {
        "&_crc" = 0;
        "&_s" = 1;
        "&_u" = ".etnoKo9L";
        "&_v" = "mi3.1.2";
        "&a" = 800078077;
        "&aid" = "com.mycompany.app";
        "&an" = GoogleAnalyticsDemoiOS;
        "&av" = "1.0";
        "&cd" = "Detail Screen";
        "&cid" = "caf03508-eba6-42f8-9600-3832ce042907";
        "&dm" = "x86_64";
        "&ds" = app;
        "&sr" = 750x1334;
        "&t" = screenview;
        "&tid" = "UA-xxxxxxxx-3";
        "&ul" = en;
        "&v" = 1;
        "&z" = 663648936779959001;
        gaiVersion = "3.12";
    };
    timestamp = "2015-06-24 07:03:36 +0000";
}
2015-06-24 15:03:36.644 GoogleAnalyticsDemoiOS[9540:264684] VERBOSE: GoogleAnalytics 3.12 __70-[GAIBatchingDispatcher checkIAdCampaignAttributionWithHitParameters:]_block_invoke (GAIBatchingDispatcher.m:749): iAd campaign tracking disabled because the iAd framework is not linked. See http://goo.gl/426NGa for instructions.
2015-06-24 15:03:46.642 GoogleAnalyticsDemoiOS[9540:264684] VERBOSE: GoogleAnalytics 3.12 -[GAIRequestBuilder requestGetUrl:payload:] (GAIRequestBuilder.m:195): building URLRequest for https://ssl.google-analytics.com/collect
2015-06-24 15:03:46.643 GoogleAnalyticsDemoiOS[9540:264684] VERBOSE: GoogleAnalytics 3.12 -[GAIBatchingDispatcher dispatchWithCompletionHandler:] (GAIBatchingDispatcher.m:632): Sending hit(s) GET: https://ssl.google-analytics.com/collect?av=1.0&cid=caf03508-eba6-42f8-9600-3832ce042907&tid=UA-64362429-3&a=800078077&dm=x86_64&cd=Detail+Screen&t=screenview&aid=com.wow.touch&ul=en&_u=.etnoKo9L&ds=app&sr=750x1334&v=1&_s=1&_crc=0&an=GoogleAnalyticsDemoiOS&_v=mi3.1.2&ht=1435129416641&qt=10001&z=663648936779959001
2015-06-24 15:03:46.710 GoogleAnalyticsDemoiOS[9540:264576] INFO: GoogleAnalytics 3.12 -[GAIBatchingDispatcher didSendHits:response:data:error:] (GAIBatchingDispatcher.m:226): Hit(s) dispatched: HTTP status -1
2015-06-24 15:03:46.710 GoogleAnalyticsDemoiOS[9540:264684] INFO: GoogleAnalytics 3.12 -[GAIBatchingDispatcher deleteHits:] (GAIBatchingDispatcher.m:529): hit(s) Successfully deleted
2015-06-24 15:03:46.711 GoogleAnalyticsDemoiOS[9540:264684] INFO: GoogleAnalytics 3.12 -[GAIBatchingDispatcher didSendHits:] (GAIBatchingDispatcher.m:237): 1 hit(s) sent

但在實時視圖中,我總是有0個活躍用戶。 任何的想法? 謝謝

- - 更新 - -

這是我修復的方式:

1 - 在AppDelegate中添加此屬性和#define指令(如果您的應用程序中沒有):

#define IS_IOS7_AND_UP                      ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0)

@interface AppDelegate ()

// Used for sending Google Analytics traffic in the background.
@property (nonatomic, assign)   BOOL okToWait;
@property (nonatomic, copy)     void (^dispatchHandler)(GAIDispatchResult result);

@end

2-在viewDidLoad中我使用dispatchInterval作為20並初始化跟蹤器共享實例:

[GAI sharedInstance].dispatchInterval = 20;
//[[[GAI sharedInstance] logger] setLogLevel:kGAILogLevelVerbose];
// Initialize tracker.
[[GAI sharedInstance] trackerWithTrackingId:MY_GoogleAnalyticsID];

3 - 為AppDelegate添加此方法:

// This method sends hits in the background until either we're told to stop background processing,
// we run into an error, or we run out of hits.  We use this to send any pending Google Analytics
// data since the app won't get a chance once it's in the background.
- (void)sendHitsInBackground {
    self.okToWait = YES;
    __weak AppDelegate *weakSelf = self;
    __block UIBackgroundTaskIdentifier backgroundTaskId =
    [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
        weakSelf.okToWait = NO;
    }];

    if (backgroundTaskId == UIBackgroundTaskInvalid) {
        return;
    }

    self.dispatchHandler = ^(GAIDispatchResult result) {
        // If the last dispatch succeeded, and we're still OK to stay in the background then kick off
        // again.
        if (result == kGAIDispatchGood && weakSelf.okToWait ) {
            [[GAI sharedInstance] dispatchWithCompletionHandler:weakSelf.dispatchHandler];
        } else {
            [[UIApplication sharedApplication] endBackgroundTask:backgroundTaskId];
        }
    };
    [[GAI sharedInstance] dispatchWithCompletionHandler:self.dispatchHandler];
}

4-在applicationDidEnterBackground結束時調用sendHitsInBackground方法:

- (void)applicationDidEnterBackground:(UIApplication *)application {
    //
    // . . .
    //
    if (IS_IOS7_AND_UP)
        [self sendHitsInBackground];
}

5 - 添加performFetchWithCompletionHandler方法並調用sendHitsInBackground:

// In case the app was sent into the background when there was no network connection, we will use
// the background data fetching mechanism to send any pending Google Analytics data.  Note that
// this app has turned on background data fetching in the capabilities section of the project.
- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

    if (IS_IOS7_AND_UP)
        [self sendHitsInBackground];

    completionHandler(UIBackgroundFetchResultNewData);
}

谷歌分析將在這項工作之后開始工作。 我在多個應用程序中嘗試這個。 如果您有任何疑問,請告訴我。

無論如何,我不相信只有一個分析工具,需要一些替代方案。 我建議你使用Flurry和/或Crashlytics(Fabric)。 Flurry被雅虎收購,Crashlytics被Twitter收購。 為什么選擇Fabric,因為它有很多你愛上的功能!

在這里你可以試試:

面料: https //fabric.io

亂舞: http //www.flurry.com

你可以打電話給他們

didFinishLaunchingWithOptions ...

  [self yourAnalyticServices];

你的代碼看起來像這樣:

- (void)yourAnalyticServices {
    //Flurry Analytics
    [Flurry setAppVersion:kAppVersion];
    [Flurry startSession:kFlurryAnalyticsID];
//    [Flurry setCrashReportingEnabled:NO];
    [Flurry setUserID:[NSString stringWithFormat:@"%@", kUserUUID]];


    //Google Analytics
    // Optional: automatically send uncaught exceptions to Google Analytics.
    //[GAI sharedInstance].trackUncaughtExceptions = YES;
    // Optional: set Google Analytics dispatch interval to e.g. 20 seconds.
    [GAI sharedInstance].dispatchInterval = 20;
    // Optional: set Logger to VERBOSE for debug information.
    //[[[GAI sharedInstance] logger] setLogLevel:kGAILogLevelVerbose];
    // Initialize tracker.
    [[GAI sharedInstance] trackerWithTrackingId:MY_GoogleAnalyticsID];

    //Crashlytics
    [Fabric with:@[CrashlyticsKit]];
}

AppDElegate.m文件中:

#import "AppDelegate.h"
#import "GAI.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

   [GAI sharedInstance].trackUncaughtExceptions  = YES;

   [GAI sharedInstance].dispatchInterval = 1;

   [[[GAI sharedInstance] logger]setLogLevel:kGAILogLevelVerbose];

   id<GAITracker> tracker = [[GAI sharedInstance] trackerWithTrackingId:@"TrackingId"];

   [GAI sharedInstance].defaultTracker = tracker;

   return YES;
}

ViewController.h中

#import <UIKit/UIKit.h>
#import "GAITrackedViewController.h"

@interface FirstViewController : GAITrackedViewController


@end

ViewController.m中

- (void)viewDidLoad {
    [super viewDidLoad];
    self.screenName = @"RED Screen";
}

試試吧 這對我很有用。 我嘗試了三個以上的應用程序。 而且所有人都在實時工作。 如果您的應用帳戶是新帳戶,那么您可能需要等待24小時或更長時間才能看到結果。 有時需要時間來顯示實時數據而沒有任何理由。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM