【Swift3】WKwebViewでWebページのアイコンを自動取得
作成意図
Webページにはappleデバイス用のアイコンが設定されている場合があり、これが主にブックマークを使用する際のアイコン画像となります。現在このアイコンを取得する機能はWKWebViewに実装されておらず、自力で導入する必要があります。しかし、毎回これを書いていては骨が折れるので、アイコンを取得できるカスタムWKWebViewを作成しました。
ダウンロード
Get url where web page icon. · GitHub
使い方
CustomWKWebView.swiftとscript.js
をアプリケーションのディレクトリに置き、xcodeに登録してください。
CustomWKWebViewDelegate
をスーパクラスにしてください。
webView.getIconImage()
を実行すると現在表示中のページのアイコンの取得を試みます。 func urlDidGet(customWebView: , arrURL:)
がアイコンの取得時に呼び出されます。以下がサンプルの使い方になります。
ライセンス
このカスタムは営利非営利のどちらでも使用可能です。ただし二次配布は許可しません。
問題点
ATSの設定によりますが、URLSessionのdownloadTaskがブロックされる場合あります。ATSのAllow Arbitrary Loads in Web Content
のYES設定では現在のところWKwebview
しかhttp通信を認められていないので。URLsession
用に個別で通信を許可する等の対処が必要になります。
改造等
現在はapple用にタグが設置されたアイコンとog:image
しか読み込みませんが、icon等の一般的なものも読み込むようにするとより多くの場所でアイコンを取得できます。その場合複数の画像が上がってくることにりますが...
apple用のwebアイコンを取得する際に複数のアイコンがあり、かつsizeが指定されている場合は最も大きな画像を取得しますが、それでは都合の悪い場合はJavaScriptの方にある判別部分を書き換えてください。(urlDidGet(customeWebView: , arrURL:)
で配列が帰って来る理由はswiftの方で判別していた時の名残です)