Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@spnv_mori

[iOS 9] SFSafariViewControllerお試し

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に投稿しながら、腕を上げます。
見やすいマークダウンとか。。。

以上

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
6
Help us understand the problem. What are the problem?