なつねこメモ

主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。

ShareLink で Preview をカスタムしたい場合、 subject/message も指定しないと共有先のアプリが受け取ってくれない

Swift では、 ShareLink を使うことで、簡単に共有メニューを作ることが出来ます。 しかし、テキストを共有したいが、プレビューは編集したいとき、次のように ShareLink を定義すると、共有先のアプリではアイテムを受け取ってくれません:

ShareLink(
    item: "シェアしたい!",
    preview: SharePreview("\"シェアしたい!\" を共有するよ", image: Image("AppIcon")
)

解決方法としては、タイトルの通り subject/message を指定します:

let text = "シェアしたい!"

ShareLink(
    item: text,
    subject: Text("共有したいものがあるよ"),
    message: Text(text),
    preview: SharePreview("\"\(text)\" を共有するよ", image: Image("AppIcon")
)

こうすると、基本は message に指定したアイテムを、対応しているアプリでは subject に指定したアイテムも受け取ってくれます。 ということで、ちょっとした困りごとでした。