iOS のショートカットアプリで URLを共有して GraphQL で Craft CMS へ登録する #craftcms

スマホで見ているページをいろいろなツールにシェアする感覚で、 Craft CMS に保存しておけないかな、とおもってあれこれ考えてみる。
Craft CMS 側のデータが増えすぎそうな気はするのだが、、、まぁそれも含めて経験というかんじで。

なにをつかってやるかなぁということでまずはショートカットアプリで試してみる。

apple shortcut でwebページのURLを取得して表示する(値取得のデバックにも使える)画像大量 - Qiita
https://qiita.com/kajirikajiri...

こちらの記事を読んで参考にさせてもらった。

そもそも iOS メニューの共有部分とかどういう風にでるものなのか、調べるのもなかなか、という感じだった。

20230129 060401

ショートカットから受け取った物をどう取るのか、とかからそもそもわかっていなかったけど、ショートカットの入力(input from share sheet)というのがあるというところから。

20230129 060729

編集作業自体は Mac でやる方がやりやすいのだけど、 iPhone で編集する方が色々サジェストが見やすいような気がする。

タイトルはどう取るかよくわからなかったのだけど

iOSでタイトルとURLをコピーするショートカット
https://r7kamura.com/articles/...

この辺の記事とかを読んで、とりあえずショートカットの入力から名前を取得でとれたっぽい。

20230129 060958

共有したページのタイトルとURL以外に、メモとか残したいこともあるだろうから、テキスト入力できるようにしておく。

20230129 061102

取得した内容をあとは Craft 側に投げる。
GraphQL で投げるときはどうするのがいいのだろう??と思って調べてみたが、Form でやってるサンプルをどこかで見た気がするので、 Formでやる。
Get contents で POST ができる。

20230129 061703

キーを query にして、 valuequery の中身を書く。
iOS 上でこれを書くのはさすがにしんどいので、 Mac で書く。

取得したURLやタイトルをクエリの中でどうやって使うんだろうなぁ、、と考えていたが、iOS で編集画面を見ると色々サジェストが出る。

20230129 062134

わざわざ変数にセットするとかしなくてもよかった。
共有したURL、インプットに入れたテキストや取得した名前など普通にとれた。
なんだー。

これで Safari で開いているページを共有して、 Craft CMS に保存することができた。

20230129 062409

まぁ、動いたけど調整内容はまだまだ。

  • oEmbed プラグインで作っているフィールドにはどうやって mutation するのかがイマイチわからなかった。(Craft CMS 側の話)
  • メモとしてテキストインプットするときに、改行してしまうとそれがそのまま渡って query のエラーになるので、そこも調整は必要そう。
  • Safari 以外で Twitter から共有とかすると期待した感じにならないので、そこは要調整。

とはいえ、とりあえず使える感じになったので、使いながらアップデートしていきたい。
いろいろなサービスのスマホアプリだと共有の機能とか当然のようにうごいてて、ありがたいなぁと改めて。

ReactNative とかで作るとこういうのもつくれるんだろうか?
他の1つのコードから複数のOS用アプリを作れる系のとかだとどうなんだろう。
今時点ではつくれなくても、できることくらいは把握しておかないとまずいな。