2012-06-21 1 views
0

Чтобы реализовать отслеживание Omniture в приложении iPhone, я загрузил программное обеспечение AppMeasurement из SiteCatalyst (AppMeasurement.h, libAppMeasurement.a, libAppMeasurementNoThumb.a).Измерение приложения Omniture для iphone, получающего проблему при запуске приложения

Я использую библиотеку iphone для измерения приложений Omniture, связанную с релизными и dev-библиотеками. Я создаю их методом singleton (getInstance). Реализована ниже

#import "OmnitureTracking.h" 
#import "AppMeasurement.h" 

AppMeasurement *s = nil; 


@implementation OmnitureTracking 

+ (void)beginTracking { 
s = [[AppMeasurement getInstance] retain]; 
s.account = @""; 
s.debugTracking = YES; 
} 

Calling это 'beginTracking' в AppDelegate, чтобы начать отслеживание, для pagetracking реализован еще один способ, как показано ниже:

+ (void)trackViewForPage:(NSString *)pageName { 
NSLog(@"trackViewForPage::s instance::%@::",s); 
if (s == nil) 
return; 

[s clearVars]; 
[s track:[NSDictionary dictionaryWithObjectsAndKeys:pageName, @"pageName", nil]]; 
} 

Implementaion работает нормально и получать ниже журнала:

2012-06-21 01:53:20.953 MyApp[857:607] App Measurement Library compile time = Aug 4 2011 16:29:52 
2012-06-21 01:53:21.418 MyApp[857:607] trackViewForPage::s instance::<AppMeasurement: 0x28c4b0>:: 
2012-06-21 01:53:21.795 MyApp[857:607] 
Omniture App Measurement Debug: http://MyApp.net/b/ss/MyAppiosappdev/0/OIP-2.1.2/s2253418?AQB=1&ndh=1&t=21/5/2012%205%3A53%3A20%204%20240&vid=01398194867219045&ce=UTF-8&pageName=MyApp%201.2%20%281.2%29%20Launch&ts=2362139876678&events=event7%2Cevent5&c1=D%3Dv2&c2=D%3Dv6&c3=D%3Dv11&v2=MyApp%201.2%20%281.2%29&v4=0&v5=0&v6=20&v7=5&v8=Thursday&v9=4.3.3&v12=D%3Dv3&v13=D%3Dv3&s=320x480&c=24&AQE=1 

Но когда приложение переходит в фоновый режим и выходит на передний план, приложение рушится из-за отслеживания и получения журнала, как показано ниже:

Jun 21 03:07:41 unknown MyApp[467] <Warning>: trackViewForPage::s instance::(
    "" 
):: 
Jun 21 03:07:41 unknown MyApp[467] <Error>: -[__NSCFArray clearVars]: unrecognized selector sent to instance 0x28c4b0 
Jun 21 03:07:41 unknown MyApp[467] <Error>: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFArray clearVars]: unrecognized selector sent to instance 0x28c4b0' 

экземпляр «AppMeasurement» становится ничтожным или пустым, когда приложение переходит в фоновый режим и выходит на передний план, но я не могу выяснить, есть ли его проблема с библиотекой iPhone в области анализа сайта или проблема с кодировкой.

Чтобы справиться с крахом, я выполнил проверку на ноль, но не упал под нулевой случай.

Пожалуйста, помогите мне разобраться с пустым проверкой экземпляра «AppMeasurement» и почему экземпляр «AppMeasurement» становится пустым, когда приложение переходит в фоновый режим и выходит на передний план.

Thanks

+0

s является локальной переменной. Вы не сможете получить доступ к нему из «trackViewForPage». Я подозреваю, что что-то еще происходит, вы не показываете нам. Как «trackViewForPage» получает доступ к s? – wadesworld

+0

Я обновил код, пожалуйста, проверьте – dev4u

+0

, почему этот вопрос ниспровергнут? – Giacomo

ответ

0

Этот код является беспорядком; трудно сказать, что не так по причинам, упомянутым в комментариях к вашему вопросу.

  • ни один метод не должен начинаться с префикса get, если он не имеет очень специального типа

  • beginTracking протечек все, что присвоенные s

Итак ... s в настоящее время назначен экземпляр NSArray либо потому, что плохо названный getInstance возвращает NSArray, либо вы перевыпускаете этот объект.

+0

Спасибо за ответ. - Метод getInstance - это метод по умолчанию, указанный в AppMeasurement.h (SiteAnalayst SDK). linknce link - https://developer.omniture.com/en_US/gallery/app-measurement-for-ios Я не получаю никаких ошибок или предупреждений в коде. – dev4u

1

Наконец, я понял все. Извините за все неудачи.

Все, что я делаю, это использование сторонней библиотеки для реализации приложения Omniture Tracking for iPhone, которое предоставляется сайтом Catalyst.

Пожалуйста, обратитесь ниже URL для библиотеки: Site Catalyst Omniture library is intended for apps developed for all iOS devices, including iPhone, iPad and iPod Touch

Существует проблема с самой библиотекой, ее имеющие много проблем управления памятью.

Они предоставили новую библиотеку исправления утечки памяти.

Загрузите новые библиотеки, чтобы устранить проблему.

Есть вопрос в опорном классе - OmnitureTracking.m, при установке AppMeasurement.h Свойства:

//Use best practices plugin 
s.useBestPractices = YES; 

Из-за это свойство, отслеживания Omniture был призван всякий раз, когда приложение приходит в активное состояние, т.е. запуски. Поскольку у библиотек, имеющих проблемы с управлением памятью, приложение разбивается, когда когда-либо приложение переходит в фоновый режим и выходит на передний план.

Спасибо за ответы.

Но еще одна вещь, которую преследует меня, как проверить пустой экземпляр класса

Если экземпляр есть, его получение на NSLog в

2012-06-21 01:53:21.418 MyApp[857:607] trackViewForPage::s instance::<AppMeasurement: 0x28c4b0>:: 

Но в случае ошибки получения экземпляра на NSLog as

Jun 21 03:07:41 unknown MyApp[467] <Warning>: trackViewForPage::s instance::(""):: 

Увидев это, я думаю, что это случай EMPTY INSTANCE. Как проверить этот случай? Его проверка не проверяется.