Priya — geçen hafta bana, oluşturduğun fiyat düşüşü izleyicisinin "tedbir olsun diye" ürün sayfasını her dakika yoklaması gerekip gerekmediğini sormuştun. Bunu inşa etmeden önce sana tüm süreci anlatayım, çünkü yoklama aralığı aslında burada verilecek en küçük karar; ve baştan doğru şekli oturtmak, lansmandan önce bir iki inceleme döngüsü kazandıracak.
İstemin kendisiyle başla. Bana "bu sayfayı izleyen ve fiyat düştüğünde bana haber veren bir uzantı" dedin ve bu iyi bir fikir ama henüz bir spesifikasyon değil — oluşturucunun sadece neyi yaptığını değil, ne zaman harekete geçtiğini bilmesi gerekiyor. Senin izleyicin üç tetikleyici şeklinden üçüncüsü ve ihtiyacın olmasa da diğer ikisini bilmekte fayda var, çünkü şekil izinleri, izinler de inceleme takvimini belirliyor.
- Tıkla-ve-çalıştır en ucuz olanı: birisi araç çubuğu simgesine tıkladığında geçerli sayfaya karşı yalnızca bir kez çalışan bir açılır pencere — "bu sayfadaki her fiyatı bir listeye çek" gibi düşün.
- Her zaman etkin içerik betiği, belirttiğiniz bir URL kalıbında otomatik olarak çalışır — bir alan adı altındaki her sayfada bir rakibin adını vurgulamak gibi bir şey için iyidir, ama kalıbı açıkça belirtmeniz gerekir, çünkü "iç sitelerimizde" ifadesi, kastettiğinizden daha dar tahmin edilebilir.
- Senin durumun üçüncüsü: bir arka plan izleyicisi, sekme açık olsun ya da olmasın kalıcı olan bir durum, MV3 altında bir servis çalışanı üzerinde koşan ve bir şey değiştiğinde simgeye rozet ekleyen bir yapı.
Bu, oluşturucunun size bir takip sorusuyla geri dönmesi gereken tek şekildir ve öyle de yapacaktır — çünkü yoklama sayısı bir formalite değil, gerçek bir ödünleşimdir.
Bu da beni senin "her dakika" içgüdüne geri getiriyor. Bir süre önce senin yaptığınla neredeyse aynı şeyi istemiştim — bir sayfayı izle, fiyat değiştiğinde simgeye rozet ekle — ve ilk versiyon her 60 saniyede bir yokladı. Yerel olarak test eden tek bir kişi için gayet iyi çalıştı. Bunu bu uygulamayı gerçekten kuran kaç kişi varsa onunla çarpın ve gereksiz yere birinin ürün sayfasını dövüyor olursunuz, çünkü normal bir perakende listesindeki fiyatlar günde birkaç kereden fazla değişmez. Oluşturucuya istemde "her 30 dakikada bir kontrol et" de. Bu bir ödün değil, daha dürüst bir istektir — bir tarayıcı uzantısından kimsenin bir dakikadan kısa sürede uyarı almasına gerek yok ve daha sonra bir incelemeciye uzantınızın günde neden 1.440 kez eve telefon açtığını açıklamak zorunda kalmadığınız için kendinize teşekkür edeceksiniz.
Düşünmenize gerek olmayan kısımlar
Manifest konusunda endişeli olduğunu söylemiştin — olma, gerçekten dokunmana gerek olmayan tek şey bu. Her iki mağaza da artık Manifest V3 gerektiriyor; MV2, yeni listelemeler için kabul edilmeyi durdurdu ve Chrome hâlâ canlı olan MV2 uzantılarını aktif olarak devre dışı bırakıyor. MV3 altındaki başlıca değişiklik, arka plan mantığınızın kalıcı bir arka plan sayfası yerine bir servis çalışanı olarak çalışmasıdır — bir olayla başlar, tarayıcı olaylar arasında onu sonlandırabilir ve durumun yalnızca bir değişkende yaşamak yerine chrome.storage üzerinden geçmesi gerekir. Bu tam olarak oluşturucunun varsayılan olarak doğru yazdığı türden bir yaşam döngüsü ayrıntısıdır. Aramadıkça bir manifest dosyası görmeyeceksiniz bile.
Gerçekten dikkatinizi vermeniz gereken şey izinlerdir, çünkü incelemenizin ne kadar hızlı geçeceğine karar veren şey kod değil budur. İzleyicinizin yoklama için alarms ihtiyacı var ve muhtemelen son fiyatı hatırlamak için storage ihtiyacı var — tabs veya <all_urls>ihtiyacı yok ve daha sonra genişletebileceğiniz için "ileride herhangi bir sitede çalışabilme yeteneği" isterseniz, oluşturucu buna göre inşa eder ve henüz var olmayan bir özellik için geniş kapsamlı ana bilgisayar erişimi istemiş olursunuz. Bu, kurulum iletişim kutusundaki en korkutucu satırdır — "ziyaret ettiğiniz her sitedeki verileri okuyun ve değiştirin" — ve aynı zamanda otomatik bir incelemeyi manuele çeviren şeydir. Bugün ne yaptığını tarif edin. Gerçekten ihtiyaç duyduğunuzda daha sonra genişletin.
Bunu bitmiş sayıp saymadan önce otuz saniyelik dikkat gerektiren iki şey daha var: açılır pencere arayüzü ve simgeler.
- Açılır pencere arayüzü — düz onay kutuları, hiyerarşi olmayan varsayılan bir ayarlar sayfası, uzantının çalışıp çalışmamasıyla hiçbir ilgisi olmayan bir yıldızlı yorumların gerçek bir kaynağıdır. Sizinkinin sadece birkaç ayarı var (URL, belki aralık), ama yine de bir form yığını değil bir ürüne ait gibi görünmeli.
- Simgeler — simgenin dört Chrome boyutunda da (16, 32, 48, 128px, Firefox için biraz farklı bir matrisle) kontrol edilmesini sağlayın, çünkü 128'de keskin görünen bir logo, günün çoğunda bulunduğu yer olan 16'da bir lekeye dönüşür ve orası kalabalık bir araç çubuğunda yaşadığı yerdir.
Herhangi bir mağazaya dokunmadan önce
Bunu sadece sohbet önizlemesinde değil, gerçekten test edin. Yapımdan çıkan şey fiilen yüklenebilir bir uzantıdır, o yüzden şuraya gidin chrome://extensions, geliştirici modunu açın, "paketlenmemiş öğeyi yükleyin" ve önemsediğiniz gerçek ürün sayfasına karşı çalıştırın — simüle edilmiş bir versiyonuna değil. Elle özellikle şu iki şeyi kontrol ederim: yükleme izni istemi, ne istediğinize göre beklediğiniz şeyi söylüyor mu ve içerik betiği tasarlanmadığı bir sayfayla karşılaştığında ne oluyor — sessizce mi başarısız oluyor yoksa görünür bir hata mı veriyor? İkisi de bir dakikadan az sürer ve ikisi de baktığınız anda belirgin, bakmadığınızda görünmez olan türden hatalardır.
Gerçekten yayınlamaya hazır olduğunuzda her iki mağazadaki kendi geliştirici hesaplarınız üzerinden ilerleyeceksiniz — listeleme size aittir, bu platform sizin adınıza yönetmez. Ve iki mağazanın hiç de simetrik olmadığını belirtmek istiyorum, çünkü lansman tarihinizi ikisinin aynı olduğunu varsayarak planlamanızı istemem.
| Mağaza | Gönderim süreci |
|---|---|
| Chrome | Listelemeyi otomatik doldurur — başlık, açıklama, kategori ve incelemenin gerçekten okuduğu izin gerekçesi metni; ayrı ayrı yazılmak yerine kodun ne yaptığından üretilir, bu da önemlidir çünkü uyuşmayan gerekçeler tek başına yaygın bir ret nedenidir. |
| Firefox | Neredeyse elle dokunmadan; Mozilla'nın hattı daha hafiftir ve gönderim öylece işlenir. |
Yapımınız bittikten sonra oluşturulan listeleme kiti ayrıca uzantınızın gerçekten çalışırken (bir maket değil) çekilen ekran görüntülerini, listeleme metnini ve ezberden doldurulmak yerine gerçek kodla karşılaştırılarak kontrol edilen gizlilik uygulaması yanıtlarını üretecek. Harici bir sayfayla konuşan bir şey için o son kısım göründüğünden daha önemli: Chrome'un gizlilik anketi veri işleme hakkında düz evet/hayır soruları sorar ve izleyiciniz fiyatları yoklayıp saklarken "bu veri topluyor mu" sorusuna "hayır" cevabı vermek, lansmandan önce reddedilmekten öte, lansman sonrası kaldırılan türden küçük bir sahtekârlıktır. Yanıtların gerçek kodla karşılaştırılarak kontrol edilmesi bu boşluğu sizin için otomatik olarak kapatır.
| Mağaza | Tipik inceleme süresi |
|---|---|
| Firefox | Saatler, bazen bir saatin altında |
| Chrome | Birkaç gün, kötü bir haftada bazen iki güne yaklaşabilir |
Sizinki gibi arka planda kalıcı olan uzantılar, basit bir tıkla-ve-çalıştır uzantısına göre daha yavaş, manuel inceleme sırasına düşme olasılığı daha yüksektir. İkimiz de o kuyruğa müdahale edemeyiz. Duyurunuzu Firefox'un değil Chrome'un takvimine göre planlayın ve gönderdiğiniz günle aynı güne hiçbir şey planlamayın.
Son bir şey, çünkü seni tanıyorum — bu yayınlandıktan sonra "izleme listemi cihazlar arasında senkronize et" ve "fiyat geçmişini zaman içinde takip et" eklemeyi düşünüyorsun bile. Bu iyi, ama şunu bil: bunların her biri yeni bir izindir ve yeni bir izin, az önce geçtiğinden daha yavaş bir inceleme anlamına gelebilir. Daha büyük versiyonu istediğinden eminsen, şimdiden bunun için istem yazıp tek seferde daha yavaş bir incelemeyi göze almak, izinleri tek tek sızdırmaktan gerçekten daha iyidir. Henüz emin değilsen, elindekini yayınla — dar kapsamlı bir izleyici hızlı geçer, sana gerçek kullanım kazandırır ve gerçek kullanım şu anda Chrome'un kuyruğunda bekleyen daha uzun bir özellik listesinden daha değerlidir. Daha fazlasını her zaman sonra isteyebilirsin; henüz ihtiyacın olmayan bir şey yüzünden manuel incelemede sıkışıp kaldıktan sonra bu lansmanı geri alamazsın.



