6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ネイティ部Advent Calendar 2015

Day 3

[iOS 9] SFSafariViewControllerお試し

Last updated at Posted at 2015-12-03

WebViewとSafariのCookie共有問題

解決方法として、ios9ならSFSafariViewController で実現できるらしい。
実際に組み込んで動作検証してみました。
##準備
1.Xcode7をインストール
2.プロジェクトを作成し、Deployment Targetを9に設定
スクリーンショット 2015-12-03 19.11.31.png
##webview組み込み
3.storyboardでViewControllerにButtonを配置
4.ViewController.swiftに、SFSafariViewControllerが開くように実装

ViewController.swift
import UIKit
import SafariServices // ★追加

// ★SFSafariViewControllerDelegate追加
class ViewController: UIViewController, SFSafariViewControllerDelegate {

    // ★Button押した場合のメソッド
    @IBAction func openBtn(sender: AnyObject) {
        // ★開くURL
        let _url:NSURL = NSURL(string: "https://www.google.co.jp/")!
        // ★待ちに待った作成
        let _brow = SFSafariViewController(URL: _url, entersReaderIfAvailable: true)
        _brow.delegate = self
        // ★ほぼSafariを開く
        presentViewController(_brow, animated: true, completion: nil)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // ★SFSafariViewControllerを閉じた際の処理
    func safariViewControllerDidFinish(controller: SFSafariViewController) {
        print("close")
    }
}

5.ボタンのタップイベントとのひもづけ
storyboard開いて、ButtonのTouch Downの+をViewControllerへピーッと
ios_tap.png
定義したメソッドがでてくるので、選択
ios_tap2.png

6.Githubに置きました
SFSafariViewControllerお試し

##実行結果
今回はGoogleのページを開き、ログイン状態を比較することで、共有状態を検証

  • Safari未ログイン状態。アプリ起動し、ほぼSafariのWebViewを起動。
    ---> Google未ログイン状態で表示
  • Safariログイン状態。アプリ起動し、WebView表示。
    ---> Googleログイン状態で表示
  • Safari未ログイン状態。WebViewで、ログイン。Safari開く。
    ---> Googleログイン状態で表示
  • Safariログイン状態。WebViewで、ログアウト。Safari開く。
    ---> Google未ログイン状態で表示
    Safari未ログイン状態。WebViewで、未ログイン。Safariでログイン。WebView見る
    ---> Googleページのどこかのリンクを押せば、Googleログイン状態に切り替わる

ちょっと、最後は意地悪な検証をしましたが、共有できていることがわかりました。
他の完全にCookie使っているサイトで試したいですね。
いまどき、Web Storageに保持してますかね。

##P.S.
ios初心者なので、Qiitaに投稿しながら、腕を上げます。
見やすいマークダウンとか。。。

以上

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?