swift - Mengambil tag meta OpenGraph dari URL

Saya mencoba mengambil tag og (OpenGraph) dari URL dan menampilkannya di aplikasi. Saya mendapatkan tag dengan benar untuk sebagian besar situs web, namun untuk beberapa, saya tidak melakukannya.

mantan. URL ini

Ketika saya merendernya di browser dan memeriksanya, itu menunjukkan kepada saya tag meta, tetapi ketika saya mencoba mengambil html melalui cURL, ia mengembalikan konten html tanpa meta apa pun. Namun, saat saya membagikan URL di Slack atau FB, pratinjaunya dirender dengan tag OG.

Bagaimana cara melakukannya di iOS?

Bantuan apa pun dihargai.


person melaka    schedule 20.08.2018    source sumber


Jawaban (1)


Masalah dengan URL yang Anda bagikan adalah situs tersebut memerlukan Javascript untuk diaktifkan.

Jika Anda tidak mengaktifkan Javascript, Anda akan mendapatkan kembali halaman dasar yang menyatakan bahwa Anda harus mengaktifkan Javascript untuk menelusuri situs (karenanya, tidak ada tag Open Graph).

Browser Anda, Slack dan Facebook menjalankan Javascript tetapi cURL tidak. URLSession juga tidak akan ada di iOS.

Di iOS, satu-satunya cara Anda bisa mendapatkan akses ke HTML untuk situs web tersebut adalah dengan menggunakan WKWebView untuk merender halaman.

Kemudian, ketika sudah dimuat, jalankan beberapa Javascript menggunakan evaluateJavascript(_:completionHandler:) untuk mendapatkan tag OG.

Itulah satu-satunya solusi yang bisa diterapkan untuk kasus-kasus ini menggunakan perpustakaan iOS.

Klien iOS untuk Facebook, LinkedIn dll tidak melakukan ini pada klien iOS mereka. Klien iOS memanggil backend mereka, meneruskan URL untuk diproses, dan menerima kembali pratinjau. Javascript dijalankan sebagai bagian dari proses backend ini.

Ada API publik yang akan membantu Anda melakukan hal yang sama, seperti:

https://opengraph.io

person Pete Morris    schedule 20.08.2018
comment
Terima kasih atas jawabannya. Namun Facebook, LinkedIn, dan aplikasi seluler lainnya menampilkan pratinjau dengan benar. Maksud Anda mereka semua merender url di WKWebView dan mengambil tag dari sana? - person melaka; 21.08.2018
comment
Tidak, perusahaan-perusahaan tersebut tidak memproses URL di klien iOS mereka. Pratinjau Facebook menampilkan proses backend. Aplikasi mereka memanggil backend mereka, meneruskan URL untuk diproses dan kemudian menerima pratinjau kembali. Mereka bahkan memiliki cache sehingga jika URL dibagikan lagi, mereka tidak perlu lagi mengurai HTML situs tersebut. WKWebView bukanlah solusi yang ideal, tetapi ini adalah satu-satunya solusi yang menurut Anda dapat diterapkan menggunakan kerangka kerja iOS (sesuai pertanyaan Anda). Ada API publik yang dapat Anda gunakan dari aplikasi iOS untuk melakukan ini di backend, seperti yang dilakukan Facebook dll. Lihat: opengraph.io - person Pete Morris; 21.08.2018
comment
Saya telah memperbarui jawaban saya karena cakupan pertanyaannya telah berubah. - person Pete Morris; 21.08.2018