1

広告とアプリ ストアの間にあるリダイレクト ページに取り組んでいます。広告は、リダイレクト ページに誘導する静的 URL として存在します。リダイレクト ページはサードパーティに ajax リクエストを送信し、Cookie を設定してから、AppStore にリダイレクトします。すべて順調で、珍しいことではありません。

リダイレクト ページはそれ自体を閉じることができないため、Safari のタブとして残ります。私が抱えている問題は、ページがキャッシュから削除された場合にユーザーが Safari に戻ると、Safari がページをリロードしてリダイレクトをトリガーすることです。ユーザーが予期せず AppStore に放り込まれたくありません。

1 つの解決策は、Cookie の存在を確認し、存在する場合はリダイレクトしないことですが、これにより、ユーザーが別のバナー広告をクリックしても適切なリダイレクトが得られないという特殊なケースが残ります。ユーザーが開始した更新を防止するアンカーを URL に追加しようとしましたが、Safari の自動更新メカニズムは、プログラムで追加されたハッシュを尊重しません。

動的ソースを使用してユーザーをページに誘導する URL を生成できれば、タイムスタンプを生成できますが、現時点では元の URL は静的です。クライアント側のコードを使用して、これに対する解決策を持っている人はいますか? それとも、これは本当にサーバー側のソリューションを使用してのみ解決できますか?

4

2 に答える 2

1

最終的に、2 段階のリダイレクトを行うことにしました。ユーザーがバナーをクリックすると、次の場所に誘導されます。

http://myserver.example.com?someKey=someValue

これを行う関数があります:

// Do I have a visited param?
if ($.url(window.location.href).param('visited') === '1') {
    // Do I have a visited cookie?
    if (helper.retrieveCookie('VISITED') == undefined) {
        console.log('Setting visited cookie');
        helper.storeCookie('VISITED', '1');
        return 1; // Redirect to AppStore.
    }
    // Have param and cookie
    console.log('VISITED cookie set');
    console.log('Refreshed');
    return 2; // Don't redirect.
} else {
    // No param
    helper.removeCookie('VISITED');
    return 0; // Redirect to self with &visited=1
}

したがって、基本的にコードを意味のある 2 回通過させ、その後リフレッシュのために N 回通過させます。最初のパスで AJAX リクエストを実行し、パラメータを追加して自分自身にリダイレクトします。2 番目のパスでは、Cookie を設定し、AppStore にリダイレクトします。その後のページの読み込みには、Cookie とパラメーターの両方が含まれ、リダイレクトされません。新しいバナーのクリックにはパラメーターがないため、通常どおり実行されます。

リダイレクト ページをリロードする必要があるため、これは最も美しいソリューションではありませんが、そのコンテンツはキャッシュされる必要があるため、ヒットは最小限に抑えられるはずです。

于 2012-08-21T23:47:44.433 に答える
0

ランディングページにJavaScriptを追加してみませんか?

if (history.length < 2) 
  history.back();
else
  location.href = '/thankyoufordownloading.htm';

私はそれを自分でテストしていませんが、うまくいく可能性があります。

于 2012-08-21T16:58:03.237 に答える