3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

YouTubeアプリからのshareがFlutterアプリで受け取れずにハマった話

Last updated at Posted at 2021-01-11

ShareExtensionを利用したFlutterアプリを作っていて、なぜかYouTubeアプリからのshareだけ受け取れなくてハマった...という、誰の役に立つのか分からない、とてもニッチなお話。
(普段iOS開発してないエンジニアの備忘録)

解決したかったこと

receive_sharing_intentプラグインを利用したアプリを作っている。
こちらの記事を参考にさせてもらった)

URLを受け取りたいアプリなので、サンプルに倣い、URL部分だけを使ってほぼほぼ問題なく動くようになった:open_hands:
ただ、なぜかYouTubeアプリからだけURLが受け取れない :frowning2:

shareの候補としてアプリは表示されるものの、アプリを選択してもなぜか何も起こらない。

どうやらSwiftレベルで、何かがうまく動いてない様子。 :thinking:

ログを仕込んでデバグしたいのだが...

Swiftまわりデバグしてていつもハマるのはログ。
Swiftでprint等でログを仕込んでも、Flutterのコンソールには何も表示されず。
何が起きてるのかさっぱりわからん:ghost:

「じゃあ、XCodeで実行したらなんか見えるかなー」となり、実行してみるが
「XCodeのコンソールも何も出ねーじゃーん」...となりーの、
View -> Debug Area -> Activate Consoleをして初めてログが見えることを知る。
ただ、それでもprintNSLogで仕込んだログは表示されず。
(見落としてるだけかなぁ。。。)

ひとまずの打開策

辿りついた自分のwork aroundは、"NSLogを使ってコンソールアプリでログを見る"。

NSLogならここに表示された:raised_hands:

で、本筋の問題

問題だったのは、typeの判定。
サンプルで言えば、if attachment.hasItemConformingToTypeIdentifier(urlContentType)のところで引っかかってた。

iPhoneのYouTubeアプリからshareは、なぜかURLではなく、Plain Textとしてシェアされていた。
なので、if attachment.hasItemConformingToTypeIdentifier(textContentType)の部分も実装することで解決。

何故なのかはいまいちよくわからぬ。
渡ってくるのは間違いなくURLなのだが... :thinking:

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?