Swift: Mail Extensionsを作成したら何となく使えているが、よく分からない件
Apple Mailの機能拡張を作りました。
何となく使えています。自分用としては満足(内容は秘密です!)
ですが、これがよく分かってない。
あまり情報がないのです。
というビデオがあり、そのサンプルプログラムが以下でダウンロードできるのですが、それぐらいしか情報がない。
サンプルをビルドして、ほんでどうするの?ってなります。
色々やっていた結果、XcodeからArchiveすると、Mail.appの機能拡張のところにいつのまにか入る、ということが分かりました。
あと自分のプロジェクトを作るときに、まず、ビデオの5分過ぎぐらいのところにあるXcodeのプロジェクトの「macOS→Application Extensions→Mail Extension」が、Xcodeで出てこないところではまります。
よくよく説明を理解すると「既存のmacOS Appのプロジェクトに新しいターゲットとして追加しろ」ということなんですね。なんだよ「既存のmacOS App」って?ってなります。
仕方ないのでダミーのmacOS Appのプロジェクトを作って、新しいターゲットとして「macOS→Application Extensions→Mail Extension」を追加する。
ちょこちょこっとコードを書いて、サンプルと同じようにArchiveすると、Mail.appの機能拡張タブに現れる。
これどういう仕組みなのか知りたいです。どこからMail.appは探してきたのか。
いくつか知りたいことがありますが、なんか回答探すのが大変そうです。
- Extensionに設定値を付けるとしたときのUIはどうやって作るのか
- デバッグしたいんですけども…
- 仮に配布するとしたらどうやって配布してどうやってインストールするのか
- App Storeでも売ってるように見えるけども(ほとんどない、もう1〜2個しかないんじゃないかという感じですが)、これはどうやって売るのか。買ったらどうなるのか(←買ってみればよいという気もしますけども)
あれかな、Safariの機能拡張のことを調べると、ある程度分かるのかな。
色々やっていた結果、XcodeからArchiveすると、Mail.appの機能拡張のところにいつのまにか入る、ということが分かりました。
違いました。
もうビルドした瞬間に現れます。
もとのプロジェクトのAppをゴミ箱に入れると消え、ゴミ箱から別の場所に移動しても現れます。
ファイルシステムを監視しているのかしら。
なので?Appで設定させて、そのデータをExtensionで読めば良い、という感じでしょうかね。
Appをダウンロードした瞬間にMail.appは、そこに埋め込まれたExtensionを認識します。
デバッグはなんかできない気がします。
そして、App StoreではAppを売る、という感じなんでしょうね。
デバッグはなんかできない気がします。
デバッグできましたね。XcodeでMail.appにアタッチする感じで、デバッグできます。
これなら色々できますね。
App側でUserDefaultsに書いたら、Extension側でそれを取れるかと思いましたが、取れませんでした。
Mail.appのが取れてしまう気もちょっとします。
よくよく考えると危ない仕組みかも知れません。
少なくともUserDefaults.standard
にはMail.appのものらしき値は入ってないですね。
少し安心。
UserDefaults(suiteName:)
でやっても取れませんね。
どうすっかな。
UserDefaults(suiteName:)
でやっても取れませんね。
これやるには、そもそもAppleにApp Groupsというのを登録しないといけないように見えます。
話がちょっと大がかりですが、まあやってみましょうか。
AppとExtensionの両方のターゲットのCapabilitiesにApp Groupsを設定しないとダメ、ということに気付かずちょっとあれでしたが、できました。
いいですね。