Tema
Veri kaynakları
App internete çıkamaz. Dış veri gerektiğinde veriyi sunucu çeker, ortak bir şemaya çevirir ve host app'e bridge ile verir. Sağlayıcı API anahtarı panel sunucusunda durur; cihaza, app paketine, init mesajına veya loglara hiçbir zaman yazılmaz.
İlk sağlayıcı weather (hava durumu).
Manifest
json
{
"params": [
{ "key": "city", "type": "text", "label": { "tr": "Şehir", "en": "City" }, "required": true, "default": "İstanbul" }
],
"data": {
"providers": [{ "id": "weather", "inputs": { "city": "city" } }]
}
}inputs.city, kök seviyede,i18nolmayan birtextparametresinin anahtarıdır. Panelde kullanıcı şehri bu alana yazar.- Sağlayıcı bildirmek
datayeteneğini örtük verir;permissions.capabilitiesiçinedatayazmak gerekmez. - Anahtarı
weatherolan birdatasetparametresi tanımlanamaz (dataset_provider_conflict). - Sağlayıcı eklemek minor sürüm ister ve sürümü platform incelemesine düşürür (yeni yetki:
provider:weather). Silmek veyainputsdeğiştirmek patch'tir.
App tarafı
ts
import { Corevo } from '@corevo-ds/app-sdk';
import type { WeatherV1 } from '@corevo-ds/manifest';
function render(weather: WeatherV1 | null) {
const city = String(Corevo.params.get('city') ?? '').trim();
if (!weather || weather.location.query !== city) {
showWaiting(); // veri yok veya şehir değişti, yenisi bekleniyor
return;
}
showTemp(weather.current.temp_c, weather.current.condition);
}
render(Corevo.data.get<WeatherV1>('weather'));
Corevo.data.on<WeatherV1>('weather', render);data.getson değeri veyanulldöner;data.onyalnız sonraki güncellemeleri verir.null: veri yok (şehir bulunamadı veya henüz çekilmedi). Bekleme durumu gösterin.- Sağlayıcı geçici hata verirse host son iyi değeri tutar.
fetched_at3 saatten eskiyse "son güncelleme" notu göstermeniz önerilir. - Kullanıcı şehri değiştirince yeni veri gelene kadar eski veri gelebilir;
location.queryile karşılaştırın. - Veri sunucuda 10–60 dakikada bir yenilenir. Cihaz son veriyi saklar, çevrimdışı açılışta da gösterir.
WeatherV1
| Alan | Açıklama |
|---|---|
schema | Sabit 1 |
location | query (sorgulanan şehir, aynen), name, country (ISO 3166-1 alpha-2), lat, lon, utc_offset_s |
fetched_at | Sunucunun veriyi çektiği an, ISO-8601 UTC |
current | temp_c, feels_like_c, humidity (0..100), wind_ms, condition, icon_day |
daily[] | En fazla 5 gün, şehrin yerel günü: date, min_c, max_c, condition, pop (0..1) |
hourly[] | En fazla 8 saat: time (UTC), temp_c, condition |
Birimler her zaman °C ve m/s'dir; dönüşüm app'te yapılır. condition değerleri: clear, few_clouds, clouds, overcast, drizzle, rain, thunderstorm, snow, fog.
Tip, JSON Schema ve doğrulayıcı @corevo-ds/manifest paketindedir: WeatherV1, @corevo-ds/manifest/schema/weather.v1, validateWeatherV1. Örnek veriler: @corevo-ds/manifest/fixtures/providers/weather/istanbul-sunny.json.
Geliştirirken
corevo dev sağlayıcı verisini dev/data/weather.json dosyasından okur ve dosya değişince data.update gönderir. Paketteki örneklerden birini kopyalayın:
bash
mkdir -p dev/data
cp node_modules/@corevo-ds/manifest/fixtures/providers/weather/istanbul-sunny.json dev/data/weather.json@corevo-ds/manifest projede yoksa npm install -D @corevo-ds/manifest ile ekleyin.