4
私は、iOS9の時点で、SFSafariViewControllerでクッキーを読むことができるはずです。私が行う場合SFSafariViewControllerクッキー
var dd = new Date(Date.now() + 1000 * 60 * 60 * 24).toGMTString();
var expires = "expires="+ dd;
document.cookie = "mycookie=cookievalue; " + expires + " domain=.mydomain.co.uk ; path=/ ";
を:私は、以下のものを使用してJSの私のページでクッキーを設定した場合
- (void)safariViewController:(SFSafariViewController *)controller didCompleteInitialLoad:(BOOL)didLoadSuccessfully
{
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookiesArray = [storage cookies];
}
cookiesArrayは常に空です。
私は伝統のUIWebView
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookiesArray = [storage cookies];
}
を使用している場合は、私は私が期待していたクッキーを取得します。
私が間違っていると思われるアイデアはありますか?
私に戻ってきたがに応じてくれてありがとう:https://developer.apple.com/reference/safariservices/sfsafariviewcontroller ビューコントローラは、そのようなリーダー、オートフィル、不正Webサイトの検出、およびコンテンツのブロックとしてSafariの機能を備えています。これは、Cookieや他のウェブサイトのデータをSafariと共有します。ユーザーのアクティビティとSFSafariViewControllerとの対話は、オートフィルデータ、閲覧履歴、またはウェブサイトデータにアクセスできないアプリには表示されません。あなたのアプリとSafariの間でデータを保護する必要はありません。 –
あなたは、SFSafariViewControllerが「Safariでクッキーや他のウェブサイトのデータを共有している」とは何を誤解していますか? SFSafariViewControllerはSafariのインスタンスです。あなたのアプリの一部ではありません。 Safariのデータ(クッキー、オートフィルなど)のサンドボックスにアクセスしていますが、Safariでそのデータを共有するアプリではありません。あなたのアプリは、Cookieを含むSafariの安全なデータにアクセスすることはできません。あなたのアプリでウェブサイトのクッキーにアクセスする必要がある場合、SFSafariViewControllerは正しい選択ではありません。 – wottle
あなたはあなたのコードで私の答えを証明しました。 SFSafariViewControllerでWebサイトにアクセスすると、NSHTTPCookieStorageは空になります。 SFSafariViewControllerはそれを使用していますが、あなたがしようとしているものではありません。 – wottle