Autore Topic: Problema con le notifiche in background.  (Letto 366 volte)

Offline cri0995

  • Nuovo arrivato
  • *
  • Post: 25
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Wimdows 8.1
Problema con le notifiche in background.
« il: 30 Settembre 2016, 12:43:25 CEST »
0
Probabilmente sbaglio proprio il concetto, il fatto è che non ho trovato documentazione in merito. Voglio che la mia app chiusa invii una notifica alle 7:00 di ogni giorno. Questo è il codice che ho scritto.


public class MainActivity extends ActionBarActivity {
   
    NotificationManager notificationManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        getSupportActionBar().hide();
        NotificationCompat.Builder n  = new NotificationCompat.Builder(this)
                .setContentTitle("Arrivato nuovo messaggio!!")
                .setContentText("Autore: Nicola Rossi")
                .setSmallIcon(R.drawable.ic_launcher);
        Calendar c = Calendar.getInstance();
        int Ora = c.get(Calendar.HOUR_OF_DAY);
        int Minuti= c.get(Calendar.MINUTE);
        if(Ora==7 && Minuti==0){
        notificationManager.notify(SIMPLEN_ID, n.build());}


Il fatto è che funziona solo nel momento in cui io apro l'app alle 7:00 o se la apro prima e rimane aperta. Come posso risolvere la situazione?
Grazie, buona giornata.

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:Problema con le notifiche in background.
« Risposta #1 il: 30 Settembre 2016, 14:38:57 CEST »
0
Ciao,
per ricevere le notifiche ad app chiusa devi creare un servizio in background che rimane attivo anche se l'app è chiusa.
E' lì che alle 7:00 invierai una notifica.

Offline cri0995

  • Nuovo arrivato
  • *
  • Post: 25
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Wimdows 8.1
Re:Problema con le notifiche in background.
« Risposta #2 il: 30 Settembre 2016, 15:40:35 CEST »
0
Ok grazie :) . Mi manca solo un'ultima cosa. Qual è il metodo per attivare un servizio all'apertura dell'activity? Ho Creato Questo per lanciare il servizio ma non riesco a farlo partire...
 
public void startNewService(View view) {
        startService(new Intent(this, MyService.class));

    }
Ho provato mettendo startNewService(View view); nell'on create ma non va.

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:Problema con le notifiche in background.
« Risposta #3 il: 30 Settembre 2016, 15:44:14 CEST »
0
Il codice è giusto. Non ti parte il servizio quando apri l'app o va in crash?

Offline cri0995

  • Nuovo arrivato
  • *
  • Post: 25
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Wimdows 8.1
Re:Problema con le notifiche in background.
« Risposta #4 il: 30 Settembre 2016, 17:32:33 CEST »
0
Putroppo non compila proprio e mi da questi errori:

Error:(27, 22) error: ')' expected
Error:(27, 27) error: illegal start of expression
Error:Execution failed for task ':app:compileDebugJava'.
> Compilation failed; see the compiler error output for details.

io ho  messo la parte public void fuori dall'on Create, mentre la seconda dentro e crea questi 3 errori dicendomi che si aspetta
in starNewService(View view); una ) tra View e view... ovviamente mettendola il tutto peggiora.

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:Problema con le notifiche in background.
« Risposta #5 il: 30 Settembre 2016, 17:37:11 CEST »
0
Ma se nell'onCreate metti direttamente:

startService(new Intent(this, MyService.class));

ti dà errore?

Offline cri0995

  • Nuovo arrivato
  • *
  • Post: 25
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Wimdows 8.1
Re:Problema con le notifiche in background.
« Risposta #6 il: 30 Settembre 2016, 17:56:48 CEST »
0
Così funziona! Grazie Mille per l'aiuto NetGEL :)

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:Problema con le notifiche in background.
« Risposta #7 il: 30 Settembre 2016, 17:59:42 CEST »
0
Figurati

Offline cri0995

  • Nuovo arrivato
  • *
  • Post: 25
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Wimdows 8.1
Re:Problema con le notifiche in background.
« Risposta #8 il: 01 Ottobre 2016, 15:12:24 CEST »
0
Avrei ancora un problema. Questo è il codice del mio servizio. Dovrebbe in teoria rimanere aperto in background e quando scattano le 7:00 mandare la notifica e chiudersi... il fatto è che non funziona sempre. Ho letto che si può provare con alarmManager ma non sono riuscito, quindi sono tornato alla prima soluzione.

 public void onCreate() {

        NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        NotificationCompat.Builder n  = new NotificationCompat.Builder(this)
                .setContentTitle("Arrivato nuovo messaggio!!")
                .setContentText("Autore: Nicola Rossi")
                .setSmallIcon(R.drawable.ic_launcher_vera);
        Calendar c = Calendar.getInstance();
        int Ora = 0;
        while(Ora!=07){
        Ora=c.get(Calendar.HOUR_OF_DAY);}
            notificationManager.notify(SIMPLE_NOTIFICATION_ID, n.build());
        stopService(new Intent(this, MyService.class));
    }

la condizione while è appropriata? C'è un modo per far fuzionare il tutto? Grazie come al solito per l'attenzione!

Offline tonno16

  • Utente storico
  • *****
  • Post: 1169
  • Respect: +56
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Problema con le notifiche in background.
« Risposta #9 il: 01 Ottobre 2016, 21:24:54 CEST »
0
Il while ad occhio mi sembra errato. Formatta il codice

Offline cri0995

  • Nuovo arrivato
  • *
  • Post: 25
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Wimdows 8.1
Re:Problema con le notifiche in background.
« Risposta #10 il: 01 Ottobre 2016, 21:59:10 CEST »
0
L'idea del while che ho messo sarebbe... Finché l'ora é diversa dalle 7 continua a controllare che ore sono, quando scattano le sette passa oltre il while, attiva la notifica e chiude il servizio. Il fatto é che non mi viene in mente nessun altro modo per farlo, ma nonostante questo non funziona...

Offline tonno16

  • Utente storico
  • *****
  • Post: 1169
  • Respect: +56
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Problema con le notifiche in background.
« Risposta #11 il: 02 Ottobre 2016, 10:11:15 CEST »
+1
No. Tu imposto un alarmmanager e lui sarà svegliato alle 7 punto... Sempre che il cell sia acceso

Offline cri0995

  • Nuovo arrivato
  • *
  • Post: 25
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Wimdows 8.1
Re:Problema con le notifiche in background.
« Risposta #12 il: 05 Ottobre 2016, 12:32:09 CEST »
0
Grazie mille ora mi informerò meglio sull'AlarmManager allora

Post unito: 05 Ottobre 2016, 17:21:40 CEST
Calendar calendar= Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY,07);
        calendar.set(Calendar.MINUTE,1);
        calendar.set(Calendar.SECOND,1);
        Intent intent = new Intent(getApplicationContext(),Notification_reciever.class) ;
        PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(),100,intent,PendingIntent.FLAG_UPDATE_CURRENT);
     AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent);


ok ho scritto questo codice... l'ho inserito nell'onCreate... il fatto è che ora basta attivare l'app e dopo pochissimo compare la notifica senza tener conto dell'orario... alarmManager non dovrebbe attivarsi solo alle 7:1:1??
« Ultima modifica: 05 Ottobre 2016, 17:21:40 CEST da cri0995, Reason: Merged DoublePost »