【Swift5】WKWebViewの動画プレイヤーをコードから閉じる

需要のなさ半端ないですが、タイトルの通り、WKWebView の動画プレイヤーを自動で閉じたいという要望がありまして (´-ι_-`)
iPhone のブラウザで YouTube の動画とか再生すると、勝手に立ち上がるあのプレイヤーですね。
その要望を聞いた時は「どうやってすんのwてかできんのw」って状態で実装し始めました。

結論できましたが、正攻法ではないし、動画プレイヤーの取得自体が面倒という。
とりあえず100パー忘れるので、ここに記載しておきます。

開発環境(前提条件)

・Xcode12
・Swift5
・SFSafariViewController ではありません

方法は2つ

どちらも一長一短あるので、自己責任でお好きな方を使用してくださいって感じでございやす。笑

NotificationCenter から取得する

WKWebView を管理している ViewController に以下のコードを追加するだけで閉じることができます。

個人的には、新たに UIWindow を生成するSDKやアラートなどがあった場合、タイミングによってちゃんと取得できるのかが気になります。

UIApplication から取得する

こっちの方が安パイな気がします。UIWindow を一通り確認するので。

注意する点として

クラッシュ等は起こりませんが、以下のログが出力されます。

-[AVPlayerViewController exitFullScreenAnimated:completionHandler:] failed with error View needs to be loaded before you can call -[AVPlayerViewController (0x000000000) exitFullScreenAnimated:completionHandler:]!

これに関しては、表示されない方法を知っている方がいたら、ぜひ教えてほしいです。

さいごに

WKWebView の動画プレイヤーって、カスタマイズというか、もう少し自由度を高くしてほしい。
がっちがちに縛りすぎて、取得だけでも全然素敵な処理じゃない。笑

コメント