Apple Script bildirim balonu - hızlı cevap tarzı istemi


1

Apple Script'i kullanarak bir bildirimi tetikleyebileceğinizi biliyorum:

osascript -e 'display notification "Hello" with title "How are you feeling?"'

Bununla birlikte, ayrıca iMessages'ın bildirimden-cevapla-açılır kutusundaki tarzında belirli değerler isteyebilmeyi de istiyorum .

Örneğin, kabuk betiğinden bunu yapabilmek istiyorum:

ANS=$(osascript -e 'display notification "Hello" with title "How are you feeling?"' with prompt)
echo "User is feeling $ANS"

Bu hiç mümkün mü?

Yanıtlar:


1

Bildirimde itiraz tipik besbelli estetik, ama onun işlevleri size ihtiyacı ne olduğunu olsaydı, o zaman için ekran iletişim kutusunu da kullanabilirsiniz çünkü şanslısınız hareket anlamıyla da aynı şekilde:

set userCanceled to false
try
    set dialogResult to display dialog ¬
        "How are you feeling?" with title ¬
        "Hello" buttons {"Close", "Reply"} ¬
        default button "Reply" cancel button ¬
        "Close" giving up after 8 ¬
        default answer ("")
on error number -128
    set userCanceled to true
end try

log "User is feeling " & text returned of dialogResult 

"8'den sonra vazgeçmek", bu süre içinde hiçbir şey olmazsa kutunun kaybolacağı anlamına gelir.

Ayrıca, metin kutusunu yalnızca kullanıcı "Yanıtla" ya bastıktan sonra görünmesini sağlayarak da bir bildirim gibi teorik olarak daha fazla yapabilirsiniz. Bunu, "varsayılan cevap" kısmı olmadan bu iletişim kutusunun bir kopyasını yaparak ve "8'den sonra pes etme" kısmını orijinalden çıkardıktan sonra, kopyayı orijinalden önce koyarak ve if ifadesini orijinalin etrafına koyarak yapabilirsiniz:

if button returned of dialogResult is "Reply" then

İletişim kutusuyla yapabileceğiniz başka bir şey de, görüntü bildirimi ile bile yapamayacağınızdan emin olduğumdan, klavyeyle kontrol etmektir. Metin kutusu içeren bir iletişim kutusu görüntülendiğinde hemen yazmaya başlayabilir, göndermek için enter tuşuna basıp istediğiniz zaman esc tuşuna basabilirsiniz.

Bir bildirim kullanmaya ayarlandıysanız, maalesef, el yazısı belgesinin bildirim bölümü tamamen mümkün olmadığını gösterir (el yazısı ile). Buna göre, kullanıcının bir dize girmesine izin vermek yerine iki değerden birini bile geri döndüremezsiniz.

https://upload.vstanced.com/images/2015/12/07/ScreenShot2015-12-06at8.03.06PM.png] 1

Yine de 2 cevap alabiliyorsanız, kimliğinizin bir düğmeyi iptal et düğmesini ve metni başka bir düğmeyi panodan almasını önerin. Belki de en şık yaklaşım değil, ama işi hallederdi.


0

Peki ya:

set allResults to ¬
display dialog "Hello!\n\nHow are you feeling?" default answer ¬
    "" buttons {"(enter)", "Don't ask."} default button 1
set answer to button returned of allResults
set userFeeling to text returned of allResults

if (userFeeling is not "") and (answer is not "Don't ask.") then ¬
    display dialog "User is feeling ... " & userFeeling buttons ¬
{"Congrats!", "So sorry..."} default button 1
end if

... basit ve kolay ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.