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
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
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
 
Top