0

YahooWebAnalyticsを使用してアプリ内のイベントを追跡しようとしています。私が使用しているコードは次のようになります

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

そして、私が返すすべての情報は正しいように見えます。Cookieが設定され、redirectcountは最初は1です(s.analytics.yahoo.com/itr.pl?....通常のブラウザにリダイレクトされるため)。その後、アプリが再起動されてセッションがクリアされるまで、redirectcountは後続のリクエストに対して0になります。responseStringは。を返しますGIF89a

データが正しいように見えても、Yahooは追跡しません。ブラウザでトラッキングURLを直接呼び出すとすぐに、期待どおりに機能します。

Flurryの方が良いオプションだと思いますが、この場合はYahooを使わざるを得ません。また、UIWebViewを使用することはおそらく機能しますが、追跡目的でのみWebビューを配置することには反対です。

ASIHTTPRequestとSafariが単純なURLへの呼び出しをこのように処理する方法に違いはありますか?または、追跡が機能しない理由を説明できる他の何かを見ますか?

4

1 に答える 1

2

私はついに問題を見つけました。ASIHTTPRequest はアプリケーション名に基づいてユーザー エージェントを作成し、このユーザー エージェントからの要求は Yahoo によって何らかの形で無視されます (バグ?)。ドキュメントに記載されているように、次のようにユーザーエージェントをオーバーライドできます。

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

iPhone で Safari のユーザー エージェント文字列を使用したところ、すぐに機能しました。ところで; 同じ問題が Android にも当てはまり、同じ修正が機能します。

于 2010-04-15T21:27:46.713 に答える