Отслеживание iPhone в веб-аналитике Yahoo с помощью ASIHTTPRequest - PullRequest
0 голосов
/ 14 апреля 2010

Я пытаюсь отследить событие в своем приложении с помощью Yahoo Web Analytics. Код, который я использую, выглядит как

ASIHTTPRequest *yahooTrack = [ASIHTTPRequest requestWithURL:
    [NSURL URLWithString:@"http://s.analytics.yahoo.com/p.pl?a=xxxxxxxxxxxxx&js=no&b=yyyyyyyyyyyy&cf6=zzzzzzzzzzz"]];
yahooTrack.didFinishSelector = @selector(statisticsFinished:);
yahooTrack.delegate = self;
[yahooTrack startAsynchronous];

Тогда статистика закончена выглядит так:

NSLog(@"Cookies: %@", request.requestCookies);
NSLog(@"Redircount: %d", [request redirectCount]);
NSLog(@"Responsecode %d %@\nMsg: %@", request.responseStatusCode, 
    request.responseStatusMessage, [request responseString]);

И вся информация, которую я получаю, выглядит правильно. Cookies установлены, redirectcount равен 1 в первый раз (так как он перенаправляет на s.analytics.yahoo.com/itr.pl?...., что делает обычный браузер). Тогда redirectcount будет 0 для последующего запроса, пока приложение не будет перезапущено и сеанс не очищен. ResponseString возвращает GIF89a.

Даже если данные выглядят правильно, Yahoo все равно не будет отслеживать. Как только я вызываю URL-адрес отслеживания прямо в браузере, он работает как положено.

Я понимаю, что Flurry - лучший вариант, но я вынужден использовать Yahoo в этом случае. Кроме того, использование UIWebView, вероятно, будет работать, но я против размещения веб-просмотра только для целей отслеживания.

Есть ли разница в том, как ASIHTTPRequest и Safari будут обрабатывать вызов простого URL-адреса, как этот? Или вы видите что-нибудь еще, что может объяснить, почему не работает отслеживание?

1 Ответ

2 голосов
/ 16 апреля 2010

Я наконец нашел проблему. ASIHTTPRequest создает пользовательский агент на основе имени вашего приложения, а запросы от этого пользовательского агента как-то игнорируются (ошибка?) Как указано в документации, вы можете переопределить user-agent следующим образом:

[request addRequestHeader:@"User-Agent" value:@"My-User-Agent-1.0"];

Я использовал строку пользовательского агента Safari на iPhone, и она сразу заработала! КСТАТИ; та же проблема относится к Android, и то же самое исправление работает.

...