2010-04-14 35 views
0

我試圖使用Yahoo Web Analytics在我的應用程序中跟蹤事件。我使用看起來像使用ASIHTTPRequest在Yahoo Web Analytics上跟蹤iPhone

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]; 

的代碼然後statisticsFinished樣子:

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

即使數據看起來正確,雅虎仍然不會跟蹤。只要我在瀏覽器中直接調用跟蹤網址,它就會按預期工作。

我知道Flurry是一個更好的選擇,但我在這種情況下被迫使用Yahoo。此外,使用UIWebView可能會起作用,但我反對僅僅爲了跟蹤目的而放入webview。

ASIHTTPRequest和Safari如何處理一個簡單的URL調用是否有區別?或者你看到其他任何可以解釋爲什麼跟蹤不起作用的東西?

回答

2

我終於找到了問題。 ASIHTTPRequest根據您的應用程序名稱創建一個用戶代理,並且雅虎以某種方式忽略來自該用戶代理的請求(bug?)。如文檔中所述,您可以覆蓋用戶代理如下:

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

我用Safari瀏覽器的用戶代理字符串在iPhone上,並立即工作! BTW;同樣的問題適用於Android,並且相同的修復工作。

相關問題