İzinler
Eklentinin neye erişebileceğini manifest'te istersin, kullanıcı onaylar.
Bir eklenti yalnız manifest.json'daki permissions dizisinde istediği ve kullanıcının onayladığı API'leri kullanabilir. Kullanıcı eklentiyi kurarken izinlerin listesini görür; sonradan Ayarlar › Eklentiler'den kapatabilir.
"permissions": ["system.stats", "media.read", "network:api.github.com"]İzni olmayan bir API'yi çağırmak ya da bir olaya abone olmak PermissionError fırlatır. Kapatılmış izinleri nazikçe karşıla:
try {
const track = await AdanotchKit.media.nowPlaying();
} catch (error) {
if (error instanceof PermissionError) {
return { expanded: ui.text("Medya izni kapalı", { tone: "secondary" }) };
}
throw error;
}Liste
| İzin | Açtığı API |
|---|---|
system.stats | system.stats(): CPU %, RAM %, bellek GB |
battery.read | battery.read(), battery.change olayı |
notifications | notify.island({ text, icon, tone, duration }) |
media.read | media.nowPlaying(), media.change olayı |
media.control | media.play(), pause(), toggle(), next(), previous(), seek() |
calendar.read | calendar.events({ days }) (1–31 gün, varsayılan 1), calendar.change olayı |
reminders.read | reminders.today(), reminders.change olayı |
clipboard.read | clipboard.readText(), clipboard.change olayı |
clipboard.write | clipboard.writeText(text) |
network:<alan-adı> | O alan adına ve alt alan adlarına fetch, yönlendirmeler ve ui.image |
İzin gerektirmeyenler: system.isOnline(), system.appearance(), storage, secrets, island, open(), render, zamanlayıcılar ve network.change, system.wake, system.sleep, appearance.change, command olayları.
Ağ izinleri
network:api.github.com hem api.github.com'u hem de *.api.github.com'u kapsar; github.com'u kapsamaz. Her alan adını ayrı yaz:
"permissions": ["network:api.github.com", "network:avatars.githubusercontent.com"]- Yalnız
https://adreslerine izin verilir. - Yönlendirmeler de aynı listeye tabidir; listede olmayan bir adrese yönlendiren istek
PermissionErrorile biter. ui.imageyalnız bu alan adlarından görsel gösterir.- Bir URL'ye istek atılıp atılamayacağını
ctx.network.isAllowed(url)ile sorabilirsin.
macOS izinleri
Bazı API'ler Adanotch'un kendisinin de macOS izni almış olmasını gerektirir:
- Takvim ve Anımsatıcılar: Adanotch'a Sistem Ayarları › Gizlilik ve Güvenlik'ten erişim verilmiş olmalı. Verilmemişse
calendar.events()vereminders.today()PermissionErrorfırlatır. - Medya: Adanotch'un Müzik modülü açık olmalı; eklenti onun gördüğünü okur.
Az izin iste
adanotch lint, istediğin ama kodunda kullanmadığın izinleri ve kodunda geçen ama istemediğin alan adlarını uyarı olarak gösterir. Kullanıcı istediğin her izni görür.