【Swift5】ShareExtension からアプリを開く

ShareExtension で処理をして後にアプリを起動していたのですが、Xcode をバージョンアップしたらエラーになってしまいました。
APPLICATION_EXTENSION_API_ONLY で怒られたので、その対処法(という名の応急処置)を記載します。
他にいい方法あるんじゃないかと思ってますので、知ってたら教えてください!

開発環境(前提条件)

・Xcode12.5(21年05月02日に再確認済み)
・Swift5
・ShareExtension の APPLICATION_EXTENSION_API_ONLY を NO に設定

実装していた方法

Xcode12.5 にアップデートをしてビルドしたら、以下のようなエラーが発生しました。
(執筆時はベータ版でしたが、改めてリリース版で確認しました)

Showing Recent Messages Application extensions and any libraries they link to must be built with the APPLICATION_EXTENSION_API_ONLY build setting set to YES.

APPLICATION_EXTENSION_API_ONLY を YES にしろって言われてます。
ShareExtension の画面を閉じてからアプリに戻りたかったので、APPLICATION_EXTENSION_API_ONLY は NO に設定して、以下のようにコードを記載していました。

これがエラーになったわけです。
とりあえず YES にしないといけないわけですが、それやっちゃうと open(_:options:completionHandler:) が使えなくなるんですよ。
開きたいアプリ側にも処理書きまくってたので、修正すんのめんどくせぇなと思ったら、別の方法がありました。

解決方法

以下のようにセレクタ使う方法が stackoverflow にありました。

セレクタ名でわかると思いますが、iOS10 で非推奨になった openURL を使っています。
非推奨になってからだいぶ経っているので、近々廃止になるんじゃないかと思ってます (´·ω·)
open(_:options:completionHandler:) 使いたいけど、セレクタ使えんし...何かいい方法あるか考えたのですが、ちっとも浮かびませんでした!

ので、こんな方法あるよって方いたら教えてください。

さいごに

アプリ間の疎結合ハンパなさすぎてつらい (´×ω×)
APPLICATION_EXTENSION_API_ONLY を NO にしたまま処理できるのかな…一応調べたのですが分からなかったので、情報あれば教えてくださいませ。

Swift
スポンサーリンク

コメント