Cerca con Google

Translate

20 dicembre 2011

Tutorial 28 - Usare il componente Notifier per interagire con l'utente


Vediamo in questo tutorial i possibili utilizzi di un componente molto interessante di App Inventor, il componente "Notifier"
Questo componente viene utilizzato principalmente per "dialogare" con l'utente in maniera interattiva facendo apparire dei messaggi di avviso o di notifica nella nostra app.


Facciamo un paio di esempi (ripresi poi anche nel video), vogliamo validare l'input di una textbox controllando che non sia stata lasciata vuota o abbia al suo interno un valore non ammesso.

Possiamo usare un notifier che avvisi l'utente in caso si sia dimenticato di inserire il valore o l'abbia inserito erroneamente, e "guidarlo" all'inserimento del valore giusto.

Altri possibili esempi di utilizzo sono un messaggio di avvertimento prima della chiusura dell'app, prima dell'avvio di un activitystarter, durante l'esecuzione di un processo che richiede molto tempo (come il download dei dati da internet) oppure anche il nostro precedente tutorial sull'EULA è stato realizzato proprio con il componente notifier.

Penso che in questo caso il video sia più interessante delle mie parole...quindi buona visione!!!


Come al solito per finire, la traduzione dell'help on line per il componente Notifier:


Notifier

Immagine di componente Notifier
Il notifier è componente non-visibile che può mostrare diversi tipi di avvisi e può loggare informazioni. Utilizzate un notifier per visualizzare le comunicazioni e gli avvisi agli utenti della vostra applicazione, e anche per registrare le informazioni che possono aiutare a eseguire il debug dell'applicazione.

Metodi

ShowMessageDialog(Text message, Text title, Text buttonText)
Appare un avviso che rimane fino a quando l'utente selezione un pulsante con il testo dato. Gli argomenti sono il messaggio da visualizzare, il titolo della finestra, e il testo sul pulsante.
ShowChooseDialog(Text message, Text title, Text button1Text, Text button2Text)
Si apre un avviso a cui l'utente deve rispondere premendo uno dei due pulsanti con il testo scelto. Gli argomenti sono il messaggio da visualizzare, il titolo della finestra, e le etichette sui pulsanti sinistro e destro. L' evento AfterChoosing viene generato quando l'utente tocca uno dei pulsanti.
ShowTextDialog(Text message, Text title)
Appare un avviso a cui l'utente deve rispondere inserendo del testo. Gli argomenti sono il messaggio da visualizzare e il titolo della finestra. L'evento AfterTextInput viene generato dopo che l'utente inserisce il testo.
ShowAlert(Text message)
Si apre un avviso temporaneo, che svanisce dopo pochi secondi. L'argomento è il testo da visualizzare.
LogError(Text message)
LogError(Text message)
LogError(Text message)
Questi metodi sono per l'uso con l'interfaccia di debug. Scrivono messaggi ai vari registri sul dispositivo Android. I registri possono essere letti con l'utilizzo degli strumenti di debug, come l'Android Debug Bridge (ADB) o logcat.

Eventi

AfterChoosing(Text choice)
Generato dopo che l'utente ha fatto una scelta in risposta a ShowChooseDialog . L'argomento è il testo sul pulsante che l'utente ha scelto.
AfterTextInput(Text response)
Generato dopo che l'utente ha risposto a ShowTextDialog . L'argomento è il testo sul pulsante che l'utente ha inserito.



Il sorgente del tutorial lo trovate qua

29 commenti:

  1. Ho realizzato una sorta di calcolatrice a 2 display e ho impostato il notifier che casomai ci si fosse dimenticati di riempire uno dei 2 apparirebbe l'alert. quando ho provato il tutto per la prima volta dal block editor al mio telefono via wi fi funzionava benissimo, quando però ho scaricato l'apk nell'applicazione vera e propria non funziona più, ora ho notato che non funziona più nemmeno nel blocks editor!!!!! Perchè? ti prego aiutami, se vuoi ti mando uno screenshot. Grazie anticipatamente

    RispondiElimina
    Risposte
    1. Hai risolto? magari era solo un problema temporaneo nei server del MIT, fammi sapere, ciao

      Elimina
  2. Salve sebastiano ti volevo chiedere io ho ho relizzato un'app con MIT grz al tuo aiuto però volevo mettere un notifier su un tasto cioè quando un utente prema quel tasto che ho scelto gli dovrà unscire una notifica

    RispondiElimina
    Risposte
    1. ti mando un screen dimmi se va bene :D https://docs.google.com/file/d/0B7uyigY3YZqJVno0Y3BlV3pFQnM/edit?usp=sharing

      Elimina
    2. no, il metodo "logerror" non c'entra nulla e viene usato solo a scopo di debug...
      vi consiglio di vedere l'help ufficiale qua:
      http://beta.appinventor.mit.edu/learn/reference/components/other.html#Notifier
      e quello che ho tradotto io in questo post,
      ad ogni modo nel video mi pare di far vedere tutti i possibili tipi di Notifier che si possono realizzare

      Elimina
  3. Non esiste un sitema che non sempre viene fuori il notififier tipo alla seconda volta che entri in uno screen? grazie se mi rispondi :D

    RispondiElimina
    Risposte
    1. Puoi far venire fuori il notifier quando vuoi, dipende dalle azioni che programmi per l'evento Show... del notifier, lo puoi far venire fuori dopo il cambio di uno screen, dopo la pressione di un pulsante, etc...
      se vuoi che esca solo una volta al cambio screen allora dovrai usare anche una variabile dove tenere traccia se il notifier è già stato visualizzato ed usare un ciclo if per controllare il valore di questa variabile ed in base ad essa mostrare o meno il notifier

      Elimina
  4. Buongiorno, volevo chiedere se vi era la possibilità di disabilitare i messaggi di errore, mi spiego meglio: sto realizzando un app che si collega ad un sito per leggere un file: qualora la connessione è debole o lenta o assente, appare un messaggio di errore del tipo: "unable to open http://..."; è possibile disattivare tale messaggio e sostituirlo con un mess del tipo "Connessione non disponibile".

    Spero di essere stato chiaro; grazie e complimenti.

    RispondiElimina
    Risposte
    1. Dovrebbe esistere la possibilità di intercettare questo tipo di messaggi, se non sbaglio il componente web (che sarà quello che usi per leggere il file immagino) ha un return code e poi ci sono anche dei blocchi per la gestione di screen1.error o qualcosa del genere (ora non ricordo), usando questi blocchi penso sia possibile fare quello che chiedi.

      Elimina
  5. Ciao, volevo chiederti se è possibile fare con App Inventor le notifiche push (per esempio quelle di Whatsapp o Facebook per intenderci), in modo che emettano un suono o un messaggio sulla schermata iniziale quando c'è un evento. Forse bisognerebbe scrivere il codice?

    Grazie

    RispondiElimina
    Risposte
    1. purtroppo non è possibile perchè le applicazioni realizzate con App Inventor non sono in esecuzione in background e non sono compatibili con GCM, quindi niente notifiche in Push (almeno per il momento) mi dispiace

      Elimina
    2. Ciao seba a proposito di questo, navigando ho trovato un ambiente di sviluppo identico a mit app inventor che si chiama Punya e ho visto che ci sono tante funzioni in più come ad esempio GCM che però non riesco a far funzionare... se hai tempo dagli un occhiata!

      Elimina
    3. http://ai-qcri-test.appspot.com/
      ecco il link!
      sarà una versione beta in prova...
      fammi sapere se riesci a implementare le notifiche push!
      e complimenti per i tutorial!

      Elimina
  6. Ciao seb!!! Mi chiedevo se fosse possibile far visualizzare un immagine all'interno dell messaggio del notifier...conosci qualche modo??? Ho provato ad impostare come messaggio il percorso dove risiede l'immagine ma nn va...

    RispondiElimina
    Risposte
    1. purtroppo con il notifier non è possibile fare una cosa del genere

      Elimina
  7. Volevo solo farti notare che è stata aggiunto nel Notifier.ShowChooseDialog un'altra parte "cancelable" da impostare con il componente logico "true" o "false" che aggiunge il terzo pulsante "cancel" che credo ti faccia tornare indietro, quindi in teoria ci sono due pulsanti a disposizione per fare due operazioni diverse

    RispondiElimina
    Risposte
    1. grazie Diocleziano, si la questione del "cancelable" era uscita anche in qualche altro commento (ora non ricordo), ed aveva fatto scalpore nella community di AI perchè di fatto rendeva non validi vecchi progetti (che andavano aggiornati mettendo "false" all'opzione cancelable)
      Di fatto non la trovo di grande utilità, se fai un notifier con "si" - "no" , alla fine il "no" può fare la stessa cosa del "cancel", se invece le scelte sono altre allora magari torna utile anche avere un opzione "cancel" di default.
      Tra l'altro se non sbaglio non si può neanche cambiare il contenuto del testo per l'opzione "cancel" che quindi può risultare brutto magari se la nostra app è tutta in italiano ed esce una scritta "cancel"...

      Elimina
    2. Si infatti, limita l'utilizzo di "cancel" alle sole applicazioni in inglese, sarebbe stato meglio se a questo punto avessero aggiunto direttamente un terzo bottone, in modo tale da avere tre scelte!
      Una domanda, stavo leggendo nel forum l'interessante metodo per trasformare l'interfaccia dell'app nello stile holo! A parte i grossi problemi che ho incontrato per decompilare e ricompilare l'apk (ma quelli erano problemi miei di ignoranza su dei dettagli), alla fine sono riuscito a fare l'app in stile holo, addirittura ho trovato altri temi, tra cui quello di far scomparire del tutto il pannello:
      tema scuro android:theme="@android:style/Theme.Holo"
      tema chiaro android:theme="@android:style/Theme.Holo.Light"
      tema chiaro con action bar scura android:theme="@android:style/Theme.Holo.Light.DarkActionBar"
      tema senza barra del titolo android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

      esempio:

      Comunque la mia domanda era se è possibile modificando altre righe cambiare anche lo stile dei notifier e magari la possibilità nei notifier di impostare solo il tastierino numerico invece di quello con tutti i caratteri!
      Grazie :)

      Elimina
  8. Con questo componente. Possiamo inviare delle notifiche anche quando l'applicazione è chiusa?

    RispondiElimina
    Risposte
    1. No, si possono solo visualizzare messaggi a schermo (detti anche "toast") quando l'app è in esecuzione.
      Con l'app chiusa il notifier non funziona

      Elimina
  9. Ciao Sebastiano, avrei bisogno di far uscire delle notifiche push, ho letto che avevi scritto non era possibile con AI classic, vale lo stesso anche per AI2?
    Grazie

    RispondiElimina
    Risposte
    1. Si, vale anche per AI2, al momento non è previsto alcun componente che invii notifiche (se escludiamo il componente texting che può rispondere all'arrivo di un sms anche ad applicazione chiusa)

      Elimina
  10. Ciao Seb,non trovo il componente 'is empty?' in app inventor 2 come devo fare?

    RispondiElimina
    Risposte
    1. Si trova nel blocks editor, in "Built-in - text - is empty ?"

      http://i.imgur.com/6fkfKfR.png

      Elimina
  11. Ciao amico Sebastiano, mi chiedo se è possibile fare con i messaggi di notifica automatica in App Inventor

    RispondiElimina
  12. ciao sebastiano, cè un modo per inviare notifiche push? magari raggirando gli ostacoli?

    RispondiElimina
  13. ciao sebastiano, cè un modo per inviare notifiche push? magari raggirando gli ostacoli?

    RispondiElimina
  14. ciao io vorrei solo che quando si esce dall'app con i tasti indietro (o non compare un messaggio di errore come :applicazione app inventore ai mia aèè si è arrestata improvvisamente) o magari che compare vuoi uscire si/no

    RispondiElimina
  15. applicazione app inventore ai mia ai si è arrestata improvvisamente,, troppo fastidioso, aiuto grazie

    RispondiElimina