web-dev-qa-db-ja.com

SFSafariViewControllerクッキー

IOS9以降、SFSafariViewControllerでCookieを読み取ることができるようになるはずです。

以下を使用してJSのページにCookieを設定した場合:

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=/ ";

私が行った場合 :

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

期待していたクッキーがもらえます。

私が間違っているかもしれないアイデアはありますか?

7
Jai Byron

SFSafariViewControllerは基本的にSafariプロセスであり、アプリの外部で実行されます。アプリがSafariアプリ自体のCookieにアクセスできないのと同様に、アプリはSFSafariViewControllerが使用するCookieにアクセスできません。

この機能が必要な場合は、UIWebViewまたはWKWebViewを使用する必要があります。

11
wottle