LoginSignup
69
46

More than 1 year has passed since last update.

【iOS】URLを渡すだけで簡単にOGカードを表示する方法

Last updated at Posted at 2016-03-14

はじめに

TwitterやFacebookなどでよく下記のようなURLが埋め込まれたカードを見かけることがあると思います。
スクリーンショット 2016-03-14 1.20.02.png
上記のカードはOpen Graph Protocolに準拠しているページのmetaタグから必要な情報を取得して表示されています。

このOGカードをiOSアプリ内でもURLを渡すだけで表示してくれるライブラリがURLEmbeddedViewです。

使い方

使い方は非常に簡単で、URLを渡すだけです。

let embeddedView = URLEmbeddedView()
embeddedView.loadURL("http://qiita.com/szk-atmosphere/items/a723a344d8c371e615ba")
view.addSubView(embeddedView)

そして、内部では取得したOG情報と画像を自動でディスクキャッシュしてくれるので、2回目以降の読み込みは自動でキャッシュからの取得になるため非常に読み込みが早くなります。
キャッシュからの読み込みでも、URL上記と同じように渡すだけで表示されます。

ちなみに、ページの最初にあったTwitterのOGカードと同じURLも以下のように表示されます。
スクリーンショット 2016-03-14 1.43.57.png

OGデータのキャッシュ

キャッシュからOG情報を自前で取得したい場合は、下記のコードを使うことで取得することができます。
ディスクにキャッシュされている場合はディスクからデータが読み込まれ、存在しない場合は自動で取得しにいきます。

let url = "https://github.com/szk-atmosphere/URLEmbeddedView"
OGDataProvider.sharedInstance.fetchOGData(urlString: urlString) { ogData, error in
   print(ogData)
}

一度取得したOGDataが次に更新されるまでの間隔を決めることができます。
デフォルト値は10日間になります。

OGDataProvider.sharedInstance.updateInterval = 10.days

画像キャッシュ

OG情報に紐付いた画像を自前で取得したい場合は、下記のコードを使うことで取得することができます。
ディスクにキャッシュされている場合はディスクからデータが読み込まれ、存在しない場合は自動で取得しにいきます。
必要なパラメータはURLだけではなく、OGDataに含まれているimageUUIDも必要になります。

OGImageProvider.sharedInstance.loadImage(urlString: urlString) { image, error in
    print(image)
}
/*
 * v0.2.0までの記法
 * let url = ogData.imageUrl
 * let uuidString = ogData.imageUUID
 * OGImageProvider.sharedInstance.loadImage(url: url, uuidString: uuidString) { image, uuidString, error in
 *     print(image)
 * }
 */

最後に

iOSでOGカードを表示してみたいときは、さくっとURLEmbeddedViewを試してみましょう!

69
46
2

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
69
46