Omniture App Measurement для iphone, получая проблемы, когда приложение выходит на задний план

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

Я использую библиотеку приложений для iPhone от Omniture, связал библиотеки релизов и разработчиков. Я создаю их экземпляр, используя метод 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 становится пустым, когда приложение переходит в фоновый режим и выходит на передний план.

Спасибо

2 ответа

Наконец-то я разобрался с вещами. Извините за все неудачи.

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

Ниже приведен URL-адрес библиотеки: библиотека Site Catalyst Omniture предназначена для приложений, разработанных для всех устройств iOS, включая iPhone, iPad и 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 как

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

Видя это, я думаю, что это случай ПУСТОЙ ИНСТАНЦИИ. Как проверить этот случай? Это не проверка под нулевой проверкой.

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

  • ни один метод не должен иметь префикс get если это не очень особый тип

  • beginTracking утечки все, что назначено s

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

Другие вопросы по тегам