Googleタグマネージャのコンテナがこの関数でインスタンス化されています。これは、iOSがメインスレッドを制御してコンテナの設定が遅くなるため、googleTagContainerはnilGoogleタグマネージャのコンテナがiOSアプリケーションの後半に設定されています
-(void)containerAvailable:(TAGContainer *)container {
dispatch_async(dispatch_get_main_queue(), ^{
//Register custom function call tag or variable handler here if necessary
[self setGoogleTagContainer:container];
});
}
次の関数が呼び出されると、コンテナはまだ設定されていないので、if文をエスケープしてトラッキングデータを失います。
-(void)trackScreen:(NSString *)screen section:(NSString *)section location:(TWNLocation *)location additionalData:(NSDictionary *)data {
[super trackScreen:screen section:section location:location additionalData:data];
//2016.1.8 Google Analytics
if ([self googleTagContainer] != nil) {
NSDictionary *googleTrackData = [self googleScreenDataForOmnitureScreen:screen section:section location:location data:data];
if (googleTrackData != nil) {
[self submitGoogleTrackingData:googleTrackData];
} else {
DMLogDebug(DebugLogTypeTracking, @"Google Analytics tracking data not available for screen: %@, section: %@", screen, section);
}
} //end if valid tag
}
Googleのコンテナが使用可能になった後にこの関数を呼び出すためにどのような方法やデータを保存して、コンテナの設定プロセスが終了します後に追跡データを送信する方法はありますか?
ありがとうEric !!!あなたのソリューションは魅力的な働きをしました。私はqueuedEventsをNSMutabaleArrayとして定義しました。 – Samira
私は_emitQueueを使用せず、containerAvailableメソッドでdispatch_async(dispatch_get_main_queue()、^ {})を作成しました。代わりに。 – Samira