Skip to main content
Bu tutorial Hızlı başlangıç şablonunu gerçek bir plugin’e dönüştürür: kullanıcı ayarından şehir okuyan, host-brokered HTTPS ile hava durumunu çeken ve tuşa yazan bir Hava aksiyonu. Öğrenecekleriniz: manifest izin bildirimi (network.fetch host allowlist’i), binding ayarları (settingsSchema + action.settingsChanged), client.networkFetch ve fail-closed hata gösterimi.
T1 sandbox değildir; örnek yine de tüm ağ erişimini bilinçli olarak host-brokered network.fetch üzerinden yapar. Böylece aynı kod, public T2 hedefine taşınabilir kalır.

1. Manifest: izin ve aksiyon bildirin

manifest.json içinde permissions ve actions bölümlerini güncelleyin:
  • network.fetch manifest’te bildirilen HTTPS hostlarla sınırlıdır; wttr.in dışına istek CAPABILITY_DENIED alır.
  • settingsSchema alanı, kullanıcı aksiyonu tuşa atadığında uygulamanın ayar panelinde görünür.

2. Runtime: event → ayar → ağ → ekran

runtime.mjs:
Sözleşme noktaları:
  • Ayar okuma: getSettings(bindingId) binding’e özel kalıcı ayarı döner; kullanıcı ayarı değiştirince action.settingsChanged tetiklenir ve yeniden çizersiniz.
  • Ağ: networkFetch({ url, method }) host tarafından doğrulanır (HTTPS-only, host allowlist, bounded request/response). Yanıt gövdesi host adapter’ının döndürdüğü bounded değerdir; savunmacı okuyun.
  • Hata: başarısızlıkta showError + kısa başlık; exception yutmayın, loglayın.

3. Deneyin

  1. Geliştirici penceresinden projeyi yeniden yükleyin (manifest değiştiği için gerekiyorsa kaldırıp yeniden seçin).
  2. Tuşlar ekranında Hava aksiyonunu bir tuşa atayın.
  3. Tuşun ayar panelinde Şehir girin (örn. Istanbul). Tuş, Istanbul\n+29°C gibi güncellenir.
  4. Tuşa basmak veriyi yeniler.

Nereye gidebilirsiniz

  • Sıcaklığı storageSet ile önbelleğe alıp willAppear’da anında göstermek (bkz. referans: storage.private).
  • Kadran (Knob) desteği: controllers: ["Knob"] + action.dialRotate ile şehirler arasında geçiş.
  • Credential’lı API’ler: network.fetchWithCredential — raw token plugin’e asla dönmez.
Bu proje T2 sandbox-js hedefine taşınabilir: aynı SDK yüzeyi Worker transportuyla çalışır. Public upload durumu için Dağıtım durumu.