[Xcode] Extensionにもバージョン指定があるので注意してください

2016.11.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

1 はじめに

Extensionは、iOS8から追加されたアプリ連携の仕組みで、簡単に、Share(共有サイトや共有コンテンツのポスト)や、Photo Editing(写真アプリ内の写真とビデオを編集)などが実装可能です。

Extensionを作成する場合に必要な注意が、Targetの指定です。Xcode 8では、このターゲット指定のデフォルトが、iOS 10になっている(現時点でiOS 10以降対応のアプリを作成することはあまり無いと思います)ため、うっかりすると、何故か「起動しない!」とハマってしまう可能性があります。(実は、私がハマりました)

2 ハマってしまうシナリオ

それでは、Xcode 8で、iOS 9以上に対応した、ShareのExtensionを作成する場面を想定して、ハマってしまう手順を示してみたいと思います。

(1) ホストアプリの作成とターゲット指定

最初に、ホストアプリを作成します。

File > New > Projectで新規にプロジェクトを作成し、Deployment Target を9.0に変更します。 001

(2) Extensionの追加

File > New > Target で Share Extension を追加します。 002

(3) iOS 10での動作確認

この状態で、ビルド・インストールすると、Safariなどの共有でその他を選択すると、選択の一覧に追加されていることを確認出来ます。

003

(4) iOS 9での動作確認

同じものを、iOS 9で実行してみると、動作していないことが確認できます。

004

3 対応要領

これは、最初にも書いたとおり、ExtensionのTarget指定が、デフォルトでiOS 10になっているため、iOS 9で動作していないだけです。

対応は簡単です、Extension側のTarget指定を修正するだけです。

005

実行すると、iOS 9でも無事動作していることが確認できます。

006

4 最後に

iOS 10に対応するために、恐らくみなさん、開発環境をXcode 8に移行されていると思うのですが、まだまだ、iOS 10以降をターゲットとする開発は少ないように感じます。 Extensionなどを作成する場合は、ちょっと注意が必要だと感じました。