質問: Swiftを使ってiOSアプリを作成しています。 自分のアプリにボタンを作り、そこから別のアプリを起動させたいと考えているのですが、やり方がわかりません。(URLスキームというワードがちらほら) ちなみに、ボタンをタップした時に起動させる別のアプリは、AppStoreでインストールできる画像をコラージュできるようなアプリを指定する予定です。 (補足) 回答者さまのヒントを元に、以下のサイトを試しているのですがうまく実行できません。 ただコードを真似るだけだと 「Use of undeclared type 'NSWorkspace'」というエラーが出ます。 どこかでNSWorkspaceを宣言しないといけないのだと思うのですが、具体的にどこに宣言したらいいのか、コード以外でも設定すべきことはあるのかわかる方がいれば教えていただきたいです。
回答: URLスキームというのはCustomURLSchemeのことかとおもわれます。 Androidなどではディープリンクとも言ったりします。 例えば次のリンクをiOSのSafariにてURL欄に打ち込むと写真アプリが起動します。 `photos-redirect://` これは写真アプリのSchemeに"photos-redirect"という名称でスキーム(Scheme)が登録されているからです。 これらはアプリごとにスキームが設定されています。 設定の初期値は"Bundle ID"(jp.com.xxxxxxx)になりますが、 独自に名称を設定すると`appname://`のような名称をSchemeに設定できます。 話を戻しますと、URLSchemeで起動を行おうと思った場合、 対象のアプリで設定されているSchemeを知らなくてはいけません。 ですので、自作アプリか、他の別の方のアプリかで話が変わってきます。 Schemeの調査の説明になると長くなるので自作アプリであることを前提でお話します。 1. CustomURLSchemeの設定 アプリのplistファイルにてURLSchemeの設定を行うことが出来ます。 plistファイル内を"Schemes"で検索すると下記のような項目があるので2箇所確認して修正しましょう。 下記を設定すると`スキーム名://`で開くことが出来るようになります。 ``` CFBundleTypeRole Editor CFBundleURLName 【アプリBundleID】 CFBundleURLSchemes 【スキーム名】 ``` 2. CustomURLSchemeを開く 普通のURLと同じように扱います。 下記でCustomURLSchemeを開くことが出来る......のですが、 もう1つ設定が必要で後述します。 ``` let url = NSURL(string: "スキーム名://")! if (UIApplication.sharedApplication().canOpenURL(url)) { UIApplication.sharedApplication().openURL(url) } ``` 3. plistファイルで連携するアプリのCustomURLSchemeを登録する 最近のアップデートだったと思うのですが、 連携するアプリのSchemeを設定しないと外部アプリへ遷移することが出来ません。 ですので、開く前に下記の設定をplistファイルで行いましょう。 ``` LSApplicationQueriesSchemes スキーム名 ```