Italian Notifiche PUSH con Firebase, capire su quale ha cliccato l'utente

Walter Scafati

Active Member
Licensed User
Longtime User
Buongiorno,
premetto che ho seguito tutte le indicazioni del post https://www.b4x.com/android/forum/threads/solved-notifiche-firebase.127382/#post-797710 , ma quando clicco su una delle notifiche arrivate non riesco a capire su quale ho cliccato ma vedo sempre il TAG dell'ultima notifica arrivata.
B4X:
Sub Process_Globals
    Private fm As FirebaseMessaging
    Dim NotifyCount As Int
End Sub

Sub Service_Create
    fm.Initialize("fm")
End Sub

Public Sub SubscribeToTopics
    fm.SubscribeToTopic("general") 'you can subscribe to more topics
End Sub

Sub Service_Start (StartingIntent As Intent)
    If StartingIntent.IsInitialized Then fm.HandleIntent(StartingIntent)
    Sleep(0)
    Service.StopAutomaticForeground 'remove if not using B4A v8+.
End Sub

Sub fm_MessageArrived (Message As RemoteMessage)
    Log("Message arrived")
    Log($"Message data: ${Message.GetData}"$)
    Dim n As Notification
    n.Initialize
    n.Icon = "icon"
    n.Sound = True
    NotifyCount=NotifyCount+1
    Dim Tag As String = NotifyCount & " | " & Message.GetData.Get("title") & "|" & Message.GetData.Get("body")
    Main.Tag = Tag
    n.SetInfo2(Message.GetData.Get("title"), Message.GetData.Get("body"), Tag, Main)
    n.Notify(NotifyCount)
End Sub
 

Star-Dust

Expert
Licensed User
Longtime User
Come leggi il TAG dalla Main quando ricevi il click del a notifica. Cosi?

B4X:
Sub Activity_Resume
  Dim in As Intent
  in = Activity.GetStartingIntent
  If in.HasExtra("Notification_Tag") Then
    Log(in.GetExtra("Notification_Tag")) 'Will log the tag
  End If
End Sub

Non è che hai le notifiche raggruppate?
 

Walter Scafati

Active Member
Licensed User
Longtime User
In questo modo:

B4X:
Sub Activity_Create(FirstTime As Boolean)
    If Tag <> "" Then
        Log(Tag)
        Dim ms() As String = Regex.Split("\|",Tag)
        If ms.Length > 1 Then
            MsgboxAsync (ms(0), ms(1))
        End If
        Tag = ""
    End If
 

Star-Dust

Expert
Licensed User
Longtime User
E' sbagliato il codice, perché cosi ti salva l'ultimo Messaggio nel Tag cancellando i precedenti. Non è questo il modo di leggere i Tag delle notifiche
 

Walter Scafati

Active Member
Licensed User
Longtime User
Infatti succede proprio quello, memorizza solo l'ultima.
Quindi devo fare riferimento al tuo codice?
B4X:
Sub Activity_Resume
  Dim in As Intent
  in = Activity.GetStartingIntent
  If in.HasExtra("Notification_Tag") Then
    Log(in.GetExtra("Notification_Tag")) 'Will log the tag
  End If
End Sub
 

Star-Dust

Expert
Licensed User
Longtime User
Esattamente. Il tag del chiamante lo prendi dall'intent
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…