UIWebViewのcookieの扱い
UIWebViewのcookieの取り扱いをちょっと検証したのでメモ。
- cookieの情報そのものはアプリ内で管理されている模様。
- 依って、アプリをremove後、再インストールするとcookieもエキスパイアされている。
- UIWebViewを使用したViewControllerをリリースすると「ブラウザを閉じた」という扱いになる模様。
- webView.delegate = nil; としても「ブラウザを閉じた」とはみなされない
- 依って、アプリを終了するまでcookieを引き継ぐことが可能。
- 別UIWebViewでも、同ドメインの発行cookieであれば参照できる。
以下、検証で使ったコード
ViewController.h
#import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UIWebView *webView; @property (weak, nonatomic) IBOutlet UILabel *topLabel; - (IBAction)startView:(UIButton *)sender; - (IBAction)endView:(UIButton *)sender; @property (weak, nonatomic) IBOutlet UIWebView *webView_A; - (IBAction)startView_A:(UIButton *)sender; @end
ViewController.m
#import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.webView.hidden = YES; self.webView_A.hidden = YES; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (IBAction)startView:(UIButton *)sender { self.topLabel.hidden = YES; self.webView_A.hidden = YES; self.webView.hidden = NO; NSURLRequest* req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://example.jp/w.php"]]; [self.webView loadRequest:req]; } - (IBAction)startView_A:(UIButton *)sender { self.topLabel.hidden = YES; self.webView_A.hidden = NO; self.webView.hidden = YES; NSURLRequest* req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://example.jp/x.php"]]; [self.webView_A loadRequest:req]; } - (IBAction)endView:(UIButton *)sender { self.topLabel.hidden = NO; self.webView.hidden = YES; self.webView_A.hidden = YES; self.webView.delegate = nil; self.webView_A.delegate = nil; } @end