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];
}
期待していたクッキーがもらえます。
私が間違っているかもしれないアイデアはありますか?
SFSafariViewController
は基本的にSafariプロセスであり、アプリの外部で実行されます。アプリがSafariアプリ自体のCookieにアクセスできないのと同様に、アプリはSFSafariViewController
が使用するCookieにアクセスできません。
この機能が必要な場合は、UIWebView
またはWKWebView
を使用する必要があります。