10

VimeoiOSネイティブアプリがCookieをモバイルSafariに設定できることがわかりました。どのようにそれはしますか?

レポステップ:

1、iOSデバイスにVimeoiOSネイティブアプリをインストールします。

2、このVimeo iOSネイティブアプリを開き、Vimeoアカウントでサインインします。

3、モバイルSafariを開き、Webページ「https://vimeo.com/」を開きます。Vimeoにサインインしていないことがわかります。

4、Vimeo iOSネイティブアプリを開き、左側のナビゲーションバーにある[ヘルプ(疑問符)]アイコンをクリックします。VimeoのWebページヘルプセンターがUIWebViewを介して開かれていることがわかります。そして、このヘルプセンターを閉じることができます。

5、モバイルSafariを開き、Webページ「https://vimeo.com/」を開きます。Vimeoにサインインしていることがわかります。

ありがとうございました。

4

3 に答える 3

5

この質問に示されているように、NSHTTPCookieStorageクラスを使用してCookieを設定できます。

編集:
Kitsuneが指摘したように、ドキュメントには、これはOSXのようにiOSのアプリケーション間では機能しないと記載されています。

今はこれをテストする時間がありませんが、javascriptとのstringByEvaluatingJavaScriptFromStringメソッドを使用してCookieを設定でき、UIWebView共有されますか?これが私がインターネットで見つけた関数で、次のように呼び出すことができます。

function SetCookie(cookieName,cookieValue,nDays) {
 var today = new Date();
 var expire = new Date();
 if (nDays==null || nDays==0) nDays=1;
 expire.setTime(today.getTime() + 3600000*24*nDays);
 document.cookie = cookieName+"="+escape(cookieValue)
                 + ";expires="+expire.toGMTString();
}
于 2013-01-13T05:47:28.653 に答える
3

vimeoのネイティブアプリがクエリ文字列を介して何らかのサインイントークンをヘルプページに渡している可能性があります。これにより、Cookieを設定した後、URLにサインイントークンがないページにすぐにリダイレクトされる可能性があります。CookieはWebサーバーによってUIWebView(Safari)に設定されるため、Safariアプリを使用するとCookieが検出されます。

iOSでサポートするAPIは必要ありません...

于 2013-01-13T06:03:18.690 に答える
1

これはOPの質問の時点では明らかに当てはまりませんでしたが、最近ではSFSafariViewControlleriOS9および10のインスタンスとSafariの間でCookieが共有されていました。VimeoはSFSafariViewControllerこの結果を達成するために非表示を介してCookieを設定できました。ただし、これはiOS 11で変更されました。今後、すべてのアプリ(Safari自体を含む)に完全にサンドボックス化されたデータストアが追加されます。ここでの公式発表(17:28マーク)。

iOS 11では、このような動作は不可能になります(実際、これを防ぐことは、この変更に関するAppleの発表で取り上げられた例でした)。

保証されたユーザー一致をSafariからアプリに渡す方法が必要な場合は、Branch.ioなどの既存のデバイス一致ネットワークを使用する必要があります(完全な開示:私はBranchチームに所属しています)。ここで、Cookieパススルーの代わりにBranchが使用する手法について読むことができます。

于 2017-06-08T19:07:41.433 に答える