SFSafariViewControllerを試す

スポンサーリンク

iOS9からSFSafariViewControllerなるものが登場し、Safariそのものをアプリの中にモーダルウィンドウのように開くことができるようです。簡単に試してみます。開発環境は、Xcode7以上、実行環境はiOS9以上であることが必要です。

シンプルなアプリケーションを作成して、初期ビュー(この例では「ViewController.swift」)の中央にボタンを配置。そのボタンを押すとSafariビューが開くような感じにしてみます。

まず、「SafariServices」をインポート。

import SafariServices

01

ボタンを押すと、

let _url:NSURL = NSURL(string: “http://adobe.com”)!

let _brow = SFSafariViewController(URL: _url, entersReaderIfAvailable: true)

presentViewController(_brow, animated: true, completion: nil)

が実行されるようにすると、これだけでもう動作を確認できるでしょう。

02

そしたら、次にSafariビューを閉じたことを検知してみます。UIViewControllerの後に

, SFSafariViewControllerDelegate

をつけて継承し、presentViewControllerの手前に

_brow.delegate = self

と書いておき、

func safariViewControllerDidFinish(controller: SFSafariViewController) {

    print(“close”)

}

というメソッドを用意しておくと、Safariビューの右上の「Done」を押して閉じたことを検知できます。

03

04

では、iOS8.4も対象にしたアプリの場合にどうなるかDeployment Targetを「8.4」にしてみます。

05

ビルドすると

06

当然ながらエラーが発生します。赤に白丸のエラーは、問題解決を助けてくれるので助かりますね。

07

08

修正を施して全体としては、こんなコードになりました。(少々手を加えて、if文の判定の中にSafariビュー関連を全部入れときました)

iOS8.4でプレビューしてみると、if文でOSのバージョン判定ができていますね。

09

以上、簡単なテストですが、GitHubにこのテストファイルをアップしておきます。

Contribute to mushikago/SFSafariViewControllerTest development by creating an account on GitHub.

東京造形大学卒業後、マクロメディア(現アドビ システムズ)に入社。Quality AssuranceやテクニカルサポートマネージャーとしてFlash、DreamweaverなどのWeb製品を担当。独立後、虫カゴデザインスタジオ株式会社を設立。最近は、ZBrush、Xcode(Swift)、Firebase、Unity、Adobe Creative Cloud関連にフォーカスしています。モバイルアプリ開発情報を主としたブログ「MUSHIKAGO APPS MEMO」の中の人。