Oculus Quest 2'de PWA'lar

Oculus Quest 2, Meta şirketinin Oculus şirketi tarafından üretilen bir sanal gerçeklik (VR) başlığıdır. Geliştiriciler artık Oculus Quest 2'nin çoklu görev özelliğinden yararlanan 2D ve 3D Progresif Web Uygulamaları (PWA) oluşturup dağıtabilir.

Oculus Quest 2

Oculus Quest 2, Meta'nın bir bölümü olan Oculus tarafından geliştirilen bir sanal gerçeklik (VR) başlığıdır. Bu ürün, şirketin önceki başlığı olan Oculus Quest'in yerini alıyor. Cihaz, hem Android tabanlı dahili bir işletim sistemine sahip bağımsız bir başlık olarak hem de USB veya kablosuz ağa bağlıyken bir masaüstü bilgisayarda çalışan Oculus uyumlu VR yazılımıyla çalışabilir. 6 GB RAM'e sahip bir çip üzerinde Qualcomm Snapdragon XR2 sistemini kullanır. Quest 2'nin ekranı,göz çözünürlüğü başına 1.832 × 1.920 piksel çözünürlüğe sahip,120 Hz'e kadar yenileme hızında çalışan tek bir hızlı geçişli LCD panelidir.

Kumandalı Oculus Quest 2 cihazı.

Oculus Tarayıcı

Şu anda Oculus Quest 2 için kullanılabilen üç tarayıcı vardır: Firefox Reality'nin yerini alan Wolvic ve yerleşik Oculus Tarayıcı. Bu makale, ikincisine odaklanmaktadır. Oculus web sitesi, Oculus Tarayıcı'yı aşağıdaki gibi tanıtıyor.

"Oculus Tarayıcı, web'de VR deneyimleri oluşturmanıza yardımcı olmak için en yeni web standartlarını ve diğer teknolojileri destekler. Bugünün 2D web siteleri, Chromium oluşturma motoru tarafından desteklendiği için Oculus Tarayıcı'da mükemmel performans göstermektedir. En iyi performansı elde etmek ve web geliştiricilerinin WebXR gibi yeni API'lerle sanal gerçekliğin tam potansiyelinden faydalanmalarını sağlamak amacıyla Oculus başlıkları için daha da optimize edilmiştir. WebXR ile web'in yeni sınırlarını açıyoruz."

Üç tarayıcı penceresi açık Oculus Tarayıcı.

Kullanıcı aracısı

Yazma sırasında tarayıcının kullanıcı aracısı dizesi aşağıdaki gibidir.

Mozilla/5.0 (X11; Linux x86_64; Quest 2)
AppleWebKit/537.36 (KHTML, like Gecko)
OculusBrowser/18.1.0.2.46.337441587
SamsungBrowser/4.0
Chrome/95.0.4638.74
VR
Safari/537.36

Gördüğünüz gibi, Oculus Tarayıcı'nın mevcut sürümü olan 18.1.0.2.46.337441587, Chrome'un mevcut kararlı sürümünün (96.0.4664.110) yalnızca bir gerideki 95.0.4638.74 sürümünü temel alır. Kullanıcı mobil moda geçerse VR ayarı Mobile VR olarak değişir.

Oculus Tarayıcı Hakkında sayfası.

Kullanıcı arayüzü

Tarayıcının kullanıcı arayüzü (yukarıda gösterilmiştir) aşağıdaki özelliklere sahiptir (üst satır soldan sağa):

  • Geri düğmesi
  • Yeniden yükle düğmesi
  • Site bilgileri
  • URL çubuğu
  • Yer işareti oluşturma düğmesi
  • Dar, orta ve geniş seçeneklere ve yakınlaştırma özelliğine sahip yeniden boyutlandır düğmesi
  • Mobil web sitesi iste düğmesi
  • Aşağıdaki seçeneklere sahip Menü düğmesi:
    • Gizli moda geç
    • Tüm sekmeleri kapat
    • Ayarlar
    • Kitap Ayraçları
    • İndirilenler
    • İzledikleriniz
    • Tarama verilerini temizleyin

Alt satırda aşağıdaki özellikler bulunur:

  • Kapat düğmesi
  • Küçült düğmesi
  • Geri, ileri ve yeniden yükleme seçenekleri sunan üç noktalı düğme

Yenileme hızı ve cihaz piksel oranı

Oculus Tarayıcı, Oculus Quest 2 için hem 2D web sayfası içeriğini hem de WebXR'yi 90 Hz yenileme hızında oluşturur. Oculus Tarayıcı, tam ekran medya izlerken cihazın yenileme hızını videonun kare hızına (örneğin, 24 fps) göre optimize eder. Oculus Quest 2, net metinler için cihaz piksel oranı olan 1,5 değerine sahiptir.

Oculus Tarayıcı ve Oculus Store'daki PWA'lar

28 Ekim 2021'de Meta (Oculus) Ürün Yönetimi Lideri Jacob Rossi, Oculus Quest ve Oculus Quest 2'ye PWA'ların geleceğini paylaştı. İlerleyen bölümlerde Oculus'taki PWA deneyimini ve PWA'nızı Oculus Quest 2'de nasıl oluşturacağınızı, başka cihazlardan yükleyeceğinizi ve test edeceğinizi açıklıyorum.

Durum paylaşımı

Giriş durumu, Oculus Tarayıcı ve PWA'lar arasında paylaşılır ve kullanıcıların ikisi arasında sorunsuz bir şekilde geçiş yapmasına olanak tanır. Doğal olarak, Facebook Girişi kutudan itibaren desteklenmektedir. Oculus Tarayıcı, kullanıcıların şifrelerini tarayıcı ve yüklü uygulama deneyimleri arasında güvenli bir şekilde saklayıp paylaşmasına olanak tanıyan bir şifre yöneticisi içerir.

PWA pencere boyutları

Yüklü PWA'ların tarayıcı pencereleri ve pencereleri, kullanıcı tarafından serbestçe yeniden boyutlandırılabilir. Yükseklik 625 ile 1.200 piksel arasında değişebilir. Genişlik 400 piksel ile 2.000 piksel arasında ayarlanabilir. Varsayılan boyutlar 1.000 × 625 pikseldir.

PWA'larla etkileşim

PWA'lar; Oculus sol ve sağ kumandaları, Bluetooth fareleri, klavyeleri ve el ile izleme özelliğiyle kontrol edilebilir. Kaydırma işlemi, Oculus denetleyicilerin başparmak çubuklarıyla veya başparmağı ve işaret parmağını sıkıştırıp istediğiniz yönde hareket ettirerek çalışır. Kullanıcı, bir öğeyi seçmek için parmağıyla parmaklarını birbirine yaklaştırabilir.

PWA'lar (Progresif Web Uygulaması) için izinler

Oculus Tarayıcı'daki izinler, Chrome'daki izinlerle hemen hemen aynıdır. Durum, tarayıcıda çalışan uygulamalar ile yüklü PWA'lar arasında paylaşılır. Böylece kullanıcılar, aynı izinleri tekrar vermek zorunda kalmadan iki deneyim arasında geçiş yapabilir.

Birçok izin uygulanmış olsa da tüm özellikler desteklenmez. Örneğin, coğrafi konum izninin istenmesi başarılı olsa da cihaz gerçekte hiçbir zaman konum bilgisi almaz. Benzer şekilde WebHID, Web Bluetooth gibi çeşitli donanım API'leri de özellik algılama özelliğini başarıyla geçirir ancak kullanıcının Oculus'u bir donanım cihazıyla eşlemesine izin verecek bir seçici göstermez. Tarayıcı olgunlaştıktan sonra API'lerin özellik algılanabilirliği iyileştirilir.

Oculus Tarayıcı'da İzinler'e dokunun.

Chrome Geliştirici Araçları ile PWA'larda hata ayıklama

Geliştirici Modu'nu etkinleştirdikten sonra, Oculus Quest 2'deki PWA'larda hata ayıklama işlemi, tam olarak Android cihazlarda uzaktan hata ayıklama bölümünde açıklandığı gibi çalışır.

  1. Oculus cihazında Oculus Tarayıcı'da istediğiniz siteye gidin.
  2. Bilgisayarınızda Google Chrome'u başlatın ve chrome://inspect/#devices adresine gidin.
  3. İlgili Oculus cihazını bulun. Ardından cihazda o anda açık olan bir dizi Oculus Tarayıcı sekmesi gelir.
  4. İstediğiniz Oculus Tarayıcı sekmesinde inspect'yi tıklayın.

Oculus Quest 2'de çalışan uygulamaları Chrome Geliştirici Araçları ile inceleme.

Uygulama keşfi

Kullanıcılar PWA'ları keşfetmek için tarayıcıyı veya Oculus Store'u kullanabilir. Diğer tüm tarayıcılarda olduğu gibi, yüklenen PWA'lar da Oculus Tarayıcı'da bir sekmede çalışan web siteleri olarak çalışır. Kullanıcılar bir siteyi ziyaret ettiğinde Oculus Tarayıcı, uygulamanın Oculus Store'da bulunması durumunda uygulamayı keşfetmesine yardımcı olur. Oculus Tarayıcı, uygulamayı halihazırda yüklemiş olan kullanıcıların isterlerse kolayca uygulamaya geçiş yapmasına yardımcı olur.

Kullanıcıyı MyEmail uygulamasını yüklemeye davet eden Oculus Tarayıcı.

Oculus Quest 2'deki örnek PWA'lar

Meta tarafından PWA'lar

Birden fazla Meta bölümü, Oculus Quest 2 için PWA'lar (ör. Instagram ve Facebook) oluşturmuştur. Bu PWA'lar, URL çubuğu olmayan ve serbestçe yeniden boyutlandırılabilen bağımsız uygulama pencerelerinde çalışır.

Facebook Oculus Quest 2 uygulaması.

Instagram Oculus Quest 2 uygulaması

Diğer geliştiriciler tarafından sunulan PWA'lar

Bu makalenin yazıldığı tarihte, Oculus Store'daki Oculus Quest 2 için az sayıda ancak giderek artan sayıda PWA vardır. Spike, kullanıcıların e-posta, sohbet, çağrılar, notlar, görevler ve yapılacaklar gibi tüm önemli iş araçlarını, doğrudan Spike uygulamasındaki sanal ortam merkezinde, gelen kutularından denemesine olanak tanır.

Spike Oculus Quest 2 uygulaması.

Diğer bir örnek olan Smartsheet proje yönetimi, otomatikleştirilmiş iş akışları ve hızlı bir şekilde yeni çözümler derleyen bir dinamik çalışma alanıdır.

Jacob Rossi'nin yer aldığı ve 2021'de Facebook'un Connect konferansı bağlamında yayınlanan videoda tanıtıldığı gibi Slack, Dropbox veya Canva gibi daha fazla PWA gelecek.

Oculus için PWA oluşturma

Gerekli adımları meta belgelerinde özetledi. Genel olarak, Chrome'a yüklenebilir olan PWA'lar çoğu zaman Oculus'ta kullanıma hazır olarak sunulur.

Web Uygulama Manifest'i gereksinimleri

Chrome'un yüklenebilirlik ölçütleri ve Web Uygulaması Manifest spesifikasyonu ile karşılaştırıldığında bazı önemli farklılıklar vardır. Örneğin, Oculus şu anda yalnızca soldan sağa dilleri desteklerken Web Uygulaması Manifest spesifikasyonunda bu tür kısıtlamalar zorunlu değildir. Başka bir örnek de start_url. Bunlar, Chrome'un bir uygulamanın yüklenebilir olması için kesinlikle zorunlu olmasına rağmen Oculus'ta isteğe bağlıdır. Oculus, geliştiricilerin Oculus Quest 2 için PWA'lar oluşturmasına olanak tanıyan bir komut satırı aracı sunar. Bu araç, geliştiricilerin Web Uygulaması Manifest'indeki eksik parametreleri iletmelerine (veya mevcut parametreleri geçersiz kılmalarına) olanak tanır.

Ad Açıklama
name (Zorunlu) PWA'nın adı. Oculus, şu anda ad için yalnızca soldan sağa dilleri desteklemektedir.
display (Zorunlu) "standalone" veya "minimal-ui". Oculus şu anda başka değerleri desteklememektedir.
short_name (Gerekli) Gerekirse uygulama adının daha kısa bir versiyonu.
scope (İsteğe bağlı) Uygulamanın bir parçası olarak dikkate alınması gereken URL veya yollar.
start_url (İsteğe bağlı) Uygulama başlatılırken gösterilecek URL.

Oculus, PWA deneyimini özelleştirmek için kullanılabilen isteğe bağlı bir dizi özel Web Uygulaması Manifest alanına sahiptir.

Ad Açıklama
ovr_package_name (İsteğe bağlı) PWA için oluşturulan APK'nın paket adını ayarlar. Bu, ters alan adı gösterimi olmalıdır, ör. "com.company.app.pwa". Politika ayarlanmazsa geliştiricilerin komut satırı aracına --package-name parametresiyle (daha sonra zorunlu olur) bir paket adı sağlaması gerekir.
ovr_multi_tab_enabled (İsteğe bağlı) true ise bu boole alanı, PWA'ya Oculus Tarayıcı'ya benzer bir sekme çubuğu sağlar. Çok sekmeli PWA'larda, yeni bir sekmeyi (target="_new" veya target="_blank") hedefleyen dahili bağlantılar PWA penceresinde yeni sekmelerde açılır. Bu, söz konusu bağlantıların bir Oculus Tarayıcı penceresine açıldığı tek sekmeli PWA'lardan farklıdır. Bu özellik şu anda Sekmeli Uygulama Modu olarak standartlaştırılmaktadır.
ovr_scope_extensions (İsteğe bağlı) PWA'nın, web uygulaması kapsamında daha fazla web sayfası içermesini sağlar. Uzantı URL'leri veya joker karakter kalıpları içeren bir JSON sözlüğünden oluşur. Bu özellik şu anda Web Uygulamaları İçin Kapsam Uzantıları olarak standartlaştırılmaktadır.

PWA'ları Bubblewrap CLI ile paketleme

Bubble wrap, açık kaynaklı bir kitaplık grubu ve Node.js için bir komut satırı aracıdır. Bubblewrap, geliştiricilerin PWA'nızı Güvenilir Web Etkinliği (TWA) olarak başlatan bir Android projesi oluşturmasına, oluşturmasına ve imzalamasına yardımcı olmak için Google Chrome ekibi tarafından geliştirildi.

Meta Quest Tarayıcı şu anda TWA'yı tam olarak desteklememektedir ancak 1.18.0 sürümünden itibaren, Meta Quest cihazları için PWA'ların paketlenmesini desteklemektedir.

Bu uygulama, normal Android cihazlarda TWA ve Meta Quest cihazlarda Meta Quest Tarayıcı açan evrensel APK dosyaları oluşturabilir.

Node.js'nin yüklü olduğu varsayıldığında Bubblewrap CLI aşağıdaki komutla yüklenebilir:

npm i -g @bubblewrap/cli

Bubblewrap ilk kez çalıştırıldığında, gerekli harici bağımlılıkların (Java Geliştirme Kiti (JDK) ve Android SDK Derleme Araçları) otomatik olarak indirilmesini ve yüklenmesini sağlar.

PWA'nızı sarmalayan Meta Quest uyumlu bir Android projesi oluşturmak için init komutunu --metaquest işaretiyle çalıştırın ve sihirbazı takip edin:

bubblewrap init --manifest="https://your.web.app/manifest.json" --metaquest

Proje oluşturulduktan sonra, aşağıdaki komutu çalıştırarak derleyip imzalayın:

bubblewrap build

Bu işlem, app-release-signed.apk adlı dosyanın çıktısını verir. Bu dosya cihaza yüklenebilir veya Meta Quest Store, Google Play Store veya diğer herhangi bir Android uygulama dağıtım platformunda yayınlanabilir.

PWA'ları Oculus Platform Utility ile paketleme

Oculus Platform Utility, Meta tarafından Oculus Rift ve MetaQuest cihazları için uygulama yayınlamak amacıyla geliştirilen resmi komut satırı aracıdır.

Ayrıca, Meta Quest cihazları için PWA'ların create-pwa komutuyla paketlenmesine ve Meta Quest Store ile App Lab'de yayınlanmasına izin verilir.

Çıkış dosyası adını -o parametresi aracılığıyla, Android SDK yolunu ise --android-sdk parametresi aracılığıyla ayarlayın.

--web-manifest-url parametresi aracılığıyla aracı, web uygulaması manifestinin canlı URL'sine yönlendirin.

Canlı PWA'nızda manifest yoksa veya yayındaki manifesti geçersiz kılmak istiyorsanız yerel manifest dosyasını ve --manifest-content-file parametresini kullanarak PWA'nız için bir APK oluşturabilirsiniz.

Manifest'i olabildiğince sade bırakmak için özel ovr_package_name alanını manifest'e eklemek yerine ters alan adı gösterimindeki bir değerle (örneğin, com.company.app.pwa) --package-name parametresini kullanın.

ovr-platform-util create-pwa -o output.apk --android-sdk ~/bin/android-10 --manifest-content-file manifest.json --package-name com.company.app.pwa

PWA'ları PWABuilder ile paketleme

PWABuilder'ın kullanılması, yazarların gözünden şu anda Meta Quest için PWA'ları paketlemenin en kolay ve bu nedenle önerilen yoludur.

PWABuilder, Microsoft tarafından geliştirilen açık kaynaklı bir projedir. Bu proje, geliştiricilerin PWA'larını Microsoft Store, Google Play Store, App Store ve Meta Quest Store gibi çeşitli mağazalarda yayınlamak üzere paketleyip imzalamasına olanak tanır.

PWA'ları PWABuilder ile paketlemek, PWA'nın URL'sini girmek, uygulama için meta verileri girmek/düzenlemek ve Oluştur düğmesini tıklamak kadar kolaydır.

PWABuilder, geliştiricilere Meta Quest cihazları için PWA'ları paketlemede kullanabilecekleri bir araç seçeneği sunuyor.

Oculus Platform Utility'yi kullanmak için Meta Quest seçeneğini belirleyebilirsiniz.

PWABuilder paketleme seçenekleri.

Bubblewrap'u kullanmak için Android seçeneğini belirleyebilir ve Meta Quest ile uyumlu onay kutusunu işaretleyebilirsiniz.

Bubblewrap'ı kullanarak PWA'ları PWABuilder ile paketleme.

ADB ile PWA'ları yükleme

APK dosyasını oluşturduktan sonra, USB veya Wi-Fi üzerinden ADB'yi kullanarak Meta Quest cihazına yükleyebilirsiniz:

adb install app-release-signed.apk

PWA'ları paketlemek için Bubblewrap KSA kullanıyorsanız APK dosyasını başka cihazdan yüklemek için kullanışlı bir takma ad komutu sağlar:

bubblewrap install

Başka cihazdan yüklenen uygulamalar, uygulama çekmecesinde Bilinmeyen Kaynaklar bölümünde görünür.

Uygulama gönderme

PWA'ların Oculus Store'a yüklenmesi ve gönderilmesi, Oculus Developer Center belgelerinde ayrıntılı olarak ele alınmıştır.

Geliştiriciler, uygulamalarını Oculus Store'a göndermenin yanı sıra SideQuest gibi platformlar aracılığıyla tüketicilere doğrudan, güvenli bir şekilde ve mağaza onayı olmadan da dağıtabilirler. Böylece, uygulama geliştirme aşamasında, deneysel olsa veya benzersiz bir kitleyi hedefliyor olsa bile, uygulamayı doğrudan son kullanıcılara ulaştırabilir.

Çok sekmeli uygulamaları test etme

Çok sekmeli uygulamaları test etmek için, çeşitli bağlantı özelliklerini gösteren küçük bir test PWA'sı oluşturdum: yeni bir PWA içi sekme açma, mevcut sekmede kalma, yeni tarayıcı penceresi açma ve mevcut sekmede kalmaya devam eden bir Web Görünümü'nde açma. Aşağıdaki komutları makinenizde çalıştırarak bu uygulamanın yerel olarak yüklenebilir bir kopyasını oluşturun.

ovr-platform-util create-pwa -o test.apk --android-skd ~/bin/android-10 --web-manifest-url https://tomayac.github.io/oculus-pwa-test/manifest.json --package-name com.example.pwa
adb install test.apk

Test uygulamasının ekran video kaydını burada bulabilirsiniz.

SVG kodunun Oculus sürümü

Talimatları uygulamak için en son PWA'm olan SVGcode'un Oculus sürümünü oluşturdum. Oluşturulan APK dosyasını output.apk Google Drive'ımdan indirebilirsiniz. Paketi daha fazla araştırmak isterseniz derlenmiş bir sürümüm de var. Derleme talimatlarını package.json sayfasında bulabilirsiniz.

Uygulamayı Oculus'ta kullanmak, dosyaları açıp kaydetme özelliği de dahil olmak üzere sorunsuz bir şekilde çalışır. Oculus Tarayıcı, File System Access API'yi desteklemez ancak yedek yaklaşım yardımcı olur. Çalışmayan tek şey yakınlaştırmak. Beklentim, her iki kumandadaki tetikleyici düğmesine basıp kumandaları zıt yönlerde hareket ettirmekti. Bunun dışında, yerleşik ekran video kaydında görebileceğiniz gibi diğer her şey etkili ve duyarlıydı.

Etkileyici 3D WebXR PWA'lar

Oculus Quest'te PWA desteği düz 2D uygulamalarla sınırlı değildir. Geliştiriciler, WebXR API'sini kullanarak VR için etkileyici 3D deneyimler oluşturabilir.

Çeşitli istemlerin (PWA yükleme, izin istekleri, bildirimler) VR içinden nasıl işlendiğini mi merak ediyorsunuz?

Immersive Web Working Group'un WebXR Testleri kapsamındaki User Agent Prompts (Kullanıcı Aracısı İstemleri) testinin ekran video kaydını burada bulabilirsiniz.

Gördüğünüz gibi, VR moduna girmek için kullanıcının izni gerekiyor. İzinler, kaynak başına bir kez istenir. İzin istemek kapsamlı moddan çıkar. Bildirimler şu anda desteklenmiyor.

El takibi

WebXR Hand Input API ve Meta'nın yapay zeka tabanlı el izleme sistemi sayesinde ellerinizi kullanarak sürükleyici modda PWA'larla etkileşimde bulunabilirsiniz.

Immersive Web Working Group'un WebXR Samples programından Elle İzleme Örneği ekran görüntüsünü burada bulabilirsiniz.

Artırılmış/Karma Gerçeklik (Geçiş)

Meta Connect 2022'de duyurulduğu gibi, Meta Quest Tarayıcısı, Meta Quest 2 ve Meta Quest Pro cihazlarda WebXR Artırılmış Gerçeklik (MR) olarak da bilinen WebXR Artırılmış Gerçeklik (AR) için destek ekledi.

Artırılmış gerçeklik için ölçeği küçültülmüş modeller ve gizli gökyüzü ve düzlemi içeren, hafif değiştirilmiş bir A-Frame başlangıç örneğine göz atalım.

A-Frame; okunması, anlaşılması ve kopyalanıp yapıştırılması kolay bildirim temelli, yeniden kullanılabilir özel HTML öğelerinden tamamen 3D/VR/AR deneyimleri oluşturmaya yönelik açık kaynaklı bir web çerçevesidir.

Meta Quest 2'deki bu demonun ekran video kaydını burada bulabilirsiniz.

Meta Quest 2'de tek renkli kameralar vardır. Böylece, geçiş gri tonlarda, Meta Quest Pro'da ise renkli kameralar bulunur.

Sonuçlar

Oculus Quest 2'deki PWA'lar hem eğlenceli hem de umut verici. Kullanıcıların ekranlarını mevcut göreve en uygun şekilde ölçeklendirmelerini sağlayan sonsuz sanal tuval, gelecekte çalışma şeklimizi değiştirme potansiyeli taşıyor. VR'de el izleme ile yazma henüz daha emekleme aşamasında olsa da, en azından benim için henüz çok güvenilir bir şekilde çalışmasa da URL girmek veya kısa metinler yazmak için yeterince iyi çalışıyor.

Oculus Quest 2'deki PWA'ların en sevdiğim yanı, sadece bir tarayıcı sekmesinde veya platforma özgü API'ler olmadan ince bir APK sarmalayıcısı aracılığıyla değiştirilmemiş olarak kullanılabilen normal PWA'lar olmaları. Aynı kodla birden çok platformu hedeflemek hiç bu kadar kolay olmamıştı. İşte sanal gerçeklikte PWA'lar ve web'de artırılmış gerçeklik. Gelecek parlak!

Teşekkür

Flickr'da Maximilian Prandstätter'ın Oculus Quest 2 fotoğrafı. Instagram, Facebook, Oculus Tarayıcı ve Spike uygulamalarının Oculus Store resimlerinin yanı sıra uygulama keşfedilebilirliği görseli ve el izleme animasyonu Meta'nın desteğiyle. Arnau Marín i Puig'in hero resmi. Bu yayın Joe Medley tarafından incelendi.