Чтобы реализовать отслеживание Omniture в приложении для iPhone, я загрузил программное обеспечение AppMeasurement с сайта SiteCatalyst (AppMeasurement.h, libAppMeasurement.a, libAppMeasurementNoThumb.a).
Я использую библиотеку измерения приложений Omniture для iphone, связанную с библиотеками релиза и разработки. Я создаю их с помощью метода singleton (getInstance). Реализовано, как показано ниже
#import "OmnitureTracking.h"
#import "AppMeasurement.h"
AppMeasurement *s = nil;
@implementation OmnitureTracking
+ (void)beginTracking {
s = [[AppMeasurement getInstance] retain];
s.account = @"";
s.debugTracking = YES;
}
Вызов этого «beginTracking» в AppDelegate для инициации отслеживания, для отслеживания страниц реализован другой метод, как показано ниже:
+ (void)trackViewForPage:(NSString *)pageName {
NSLog(@"trackViewForPage::s instance::%@::",s);
if (s == nil)
return;
[s clearVars];
[s track:[NSDictionary dictionaryWithObjectsAndKeys:pageName, @"pageName", nil]];
}
Реализация работает нормально и получает журнал ниже:
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 Site Analyst или проблемой кодирования.
Чтобы справиться с аварией, я сделал нулевую проверку, но она не подпадает под нулевой регистр.
Пожалуйста, помогите мне разобраться с пустой проверкой экземпляра «AppMeasurement» и почему экземпляр «AppMeasurement» становится пустым, когда приложение переходит в фоновый режим и переходит на передний план.
Спасибо
OmnitureTracking.h
— это интерфейс, который я использовал для обработки всех вещей Omniture. - person dev4u   schedule 26.06.2012s
является экземпляромAppMeasurement.h
,trackViewForPage
является статическим методом, который вызывает методыclearVars
иtrack
классаAppMeasurement.h
. В приложении везде, где требуется отслеживание, я активирую этот метод. Например на главной странице -[OmnitureTracking trackViewForPage:@"homepage"];
- person dev4u   schedule 26.06.2012