Autore Topic: Notifiche push "lunghe" e extras  (Letto 250 volte)

Offline Misterxxx

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus N5
  • Sistema operativo:
    Win 7/10
Notifiche push "lunghe" e extras
« il: 30 Novembre 2016, 18:49:45 CET »
0
Ciao a tutti, è un po' che non scrivo perchè ho poco tempo da dedicare ad android quindi anche pochi problemi :)
Ho implementato le notifiche push con Firebase e non riesco a capire 2 cose:
1 - perchè il testo della notifica, quando lungo, non viene visualizzato su più righe, c'è da cambiare qualche proprietà?
2 - nella guida dice che le variabili (testo in primis) possono essere gestite come extras nella mainactivity ma quando tento di recuperarle mi da errore (null point exception); non devono essere recuperate con extras.GetString? e poi comunque quali sono le variabili passate dalla classe?

Grazie a tutti per qualsiasi aiuto.
« Ultima modifica: 30 Novembre 2016, 18:52:34 CET da Misterxxx »

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1363
  • Respect: +156
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Notifiche push "lunghe" e extras
« Risposta #1 il: 02 Dicembre 2016, 12:38:19 CET »
0
Citazione
1 - perchè il testo della notifica, quando lungo, non viene visualizzato su più righe, c'è da cambiare qualche proprietà?
Non conosco approfonditamente Firebase, ma è strano.. La notifica non si ridimensiona?

Citazione
2 - nella guida dice che le variabili (testo in primis) possono essere gestite come extras nella mainactivity ma quando tento di recuperarle mi da errore (null point exception); non devono essere recuperate con extras.GetString? e poi comunque quali sono le variabili passate dalla classe?
Posta il codice in cui cerchi di recuperare i dati e magari anche l'impostazione di notifica su Firebase.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Misterxxx

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus N5
  • Sistema operativo:
    Win 7/10
Re:Notifiche push "lunghe" e extras
« Risposta #2 il: 02 Dicembre 2016, 12:51:36 CET »
0
No, non si ridimensiona e non si apre scorrendo in basso.
Mi viene il dubbio che sia una caratteristica o impostazione del cellulare e non dell'applicazione ..

Per il secondo punto, questo è il codice estratto da una guida che ho trovato dove viene notificato il messaggio e aperta l'acivity.
Quello che ho provato a fare è passare messageBody come extra e recuperarlo nell'activity ma non funziona.
Citazione
    private void sendNotification(String messageBody) {
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
                PendingIntent.FLAG_ONE_SHOT);

        Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.info)
                .setContentTitle("Notifica DlfMania")
                .setContentText(messageBody)
                .setAutoCancel(true)
                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent);

        NotificationManager notificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        notificationManager.notify(0, notificationBuilder.build());

    }


Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1363
  • Respect: +156
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Notifiche push "lunghe" e extras
« Risposta #3 il: 02 Dicembre 2016, 14:15:46 CET »
0
Per il secondo punto, questo è il codice estratto da una guida che ho trovato dove viene notificato il messaggio e aperta l'acivity.
Quello che ho provato a fare è passare messageBody come extra e recuperarlo nell'activity ma non funziona.
Dove lo fai? Nel codice che hai postato non viene fatto. Posta la tua modifica dove passi l'extra e poi dove nell'activity cerchi di recuperarlo.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Misterxxx

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus N5
  • Sistema operativo:
    Win 7/10
Re:Notifiche push "lunghe" e extras
« Risposta #4 il: 02 Dicembre 2016, 14:20:40 CET »
0
Sono fuori ufficio.
La richiesta la faccio con:
intent.putExtras .... subito dopo intent.addFlags ...

il recupero lo faccio nella MainActivity con Bundle e getString
così come faccio in altre activities e lì funziona

quando install'APK l'errore è null poin exception alla riga dove c'è il getString che dovrebbe recuperare

Se non sono stato chiaro stasera scrivo meglio dal pc

Offline capitancooker

  • Utente junior
  • **
  • Post: 56
  • Marco
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Asus Zenpad S 8.0
  • Sistema operativo:
    Mac OSX El Capitan
Re:Notifiche push "lunghe" e extras
« Risposta #5 il: 02 Dicembre 2016, 15:08:51 CET »
0
Prova ad aggiungere al notificationBuilder lo style per BigText, una cosa così:
Codice (Java): [Seleziona]
notificationBuilder.setStyle(new NotificationCompat.BigTextStyle()
                .bigText(messageBody))

maggiori info qui https://developer.android.com/training/notify-user/expanded.html

Ciao,
Marco
Se sbaglio, correggetemi.

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1363
  • Respect: +156
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Notifiche push "lunghe" e extras
« Risposta #6 il: 02 Dicembre 2016, 15:42:43 CET »
0
Sono fuori ufficio.
La richiesta la faccio con:
intent.putExtras .... subito dopo intent.addFlags ...

il recupero lo faccio nella MainActivity con Bundle e getString
così come faccio in altre activities e lì funziona

quando install'APK l'errore è null poin exception alla riga dove c'è il getString che dovrebbe recuperare

Se non sono stato chiaro stasera scrivo meglio dal pc
Quando fai questo, prova a cambiare PendingIntent.FLAG_ONE_SHOT in PendingIntent.FLAG_UPDATE_CURRENT, in questo modo dovrebbe evitare di "perdere" gli extras.

Per la notifica (visto che la crei tu e non Firebase, pensavo ti riferissi alle push che si inviano tramite Firebase console), fai come suggerito da capitancooker.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Misterxxx

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus N5
  • Sistema operativo:
    Win 7/10
Re:Notifiche push \\\\\\\\\\\\\\\"lunghe\\\\\\\\\\\\\\\" e extras
« Risposta #7 il: 02 Dicembre 2016, 16:35:14 CET »
0
@CapitanCooker
provo a fare come dici

@blackgin
la notifica che io effettivamente mando da la console di FB in effetti si comporta diversamente se l'app è in back o foreground.
Solo nel secondo caso è l'app nel codice che ho postato che la gestisce.
Sono neofita di Android per cui sono sicuramente io che non capisco quello che è scritto in fondo al link: https://firebase.google.com/docs/cloud-messaging/android/receive
Citazione
... and the data payload is delivered in the extras of the intent of your launcher Activity.
e sto parlando degli extra "predefiniti" come il corpo del messaggio che ho letto non ricordo dove vengono inviati sempre, se ho ben capito

Post unito: [time]02 Dicembre 2016, 16:40:41 CET[/time]
... forse sbaglio io credendo che tappando sulla notifica nel momento in cui si apre l'app vengano passati gli extra?
Forse non vengono passati?  :-\

Post unito: [time]02 Dicembre 2016, 16:48:15 CET[/time]
up per capitancooker:
ho provato come dici e funziona se l'app è in foreground ma non quando in background
sinceramente penso sia il massimo ottenibile, non capisco come l'app in back possa influire sul formato della notifica
è già meglio di prima, grazie dell'indicazione ;)

Post unito: [time]02 Dicembre 2016, 17:15:54 CET[/time]
Ho trovato dove l'ho letto, Table2b.:
https://firebase.google.com/docs/cloud-messaging/http-server-ref#notification-payload-support
ma l'extra "body" è vuoto ... forse non funge usando la console?
« Ultima modifica: 02 Dicembre 2016, 17:17:58 CET da Misterxxx »

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1363
  • Respect: +156
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Notifiche push "lunghe" e extras
« Risposta #8 il: Ieri alle 13:13 »
0
Io sinceramente non ho ancora capito chi é che invia la notifica. All'inizio scrivi che la invii dalla console Firebase, però poi inserisci questo codice:
Codice (Java): [Seleziona]
 private void sendNotification(String messageBody) {
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
                PendingIntent.FLAG_ONE_SHOT);

        Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.info)
                .setContentTitle("Notifica DlfMania")
                .setContentText(messageBody)
                .setAutoCancel(true)
                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent);

        NotificationManager notificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        notificationManager.notify(0, notificationBuilder.build());

    }
In cui fai vedere che la notifica la stai creando tu.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Misterxxx

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus N5
  • Sistema operativo:
    Win 7/10
Re:Notifiche push "lunghe" e extras
« Risposta #9 il: Ieri alle 13:25 »
0
La notifica la invio dalla Console Web di Firebase (ma è possibile anche in altri modi come tramite una pagina php).
Arriva allo (o agli) smartphone e è gestita diversamente secondo che l'app sia in back o foreground.
Nel primo caso è gestita dal telefono e se la tappi si apre l'app
Nel secondo caso è gestita dall'app stessa con il codice postato la cui classe, per esteso, è;
Codice (Java): [Seleziona]
public class MyFirebaseMessagingService extends FirebaseMessagingService {
    private static final String TAG = "MyFirebaseMsgService";

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        //Displaying data in log
        //It is optional
        Log.d(TAG, "From: " + remoteMessage.getFrom());
        Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody());

        //Calling method to generate notification
        sendNotification(remoteMessage.getNotification().getBody());
    }

    //This method is only generating push notification
    //It is same as we did in earlier posts
    private void sendNotification(String messageBody) {
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
                PendingIntent.FLAG_ONE_SHOT);

        Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                .setStyle (new NotificationCompat.BigTextStyle().bigText(messageBody))
                .setSmallIcon(R.drawable.info)
                .setContentTitle("Notifica DlfMania")
                .setContentText(messageBody)
                .setAutoCancel(true)
                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent);

        NotificationManager notificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        notificationManager.notify(0, notificationBuilder.build());

    }
}
Quello che interessa di più a me è la gestione del messaggio quando l'app è in background perchè è il 99% dei casi e cercavo di capire se è possibile che l'app aperta tappando possa avere a disposizione il testo del messaggio.