Android Question How to create multiple topics in firebase message

Makumbi

Active Member
Licensed User
How can i create multiple topics to send specific messages to them please help iam just trying out this
because i have different mobile phone numbers registered and i wanted to send out specific messages to them and some times One Message to all of them please help
B4X:
Sub Service_Create
    fm.Initialize("fm")
End Sub

Public Sub SubscribeToTopics
    fm.SubscribeToTopic("general") 'you can subscribe to more topics
    fm.SubscribeToTopic("0772433637") 'you can subscribe to more topics
End Sub
B4X:
Private Sub SendMessage(Topic As String, Title As String, Body As String)
    Dim Job As HttpJob
    Job.Initialize("fcm", Me)
    Dim m As Map = CreateMap("to": $"/topics/${Topic}"$)
    Dim data As Map = CreateMap("title": Title, "body": Body)
    m.Put("data": data)
    Dim jg As JSONGenerator
    jg.Initialize(m)
    Job.PostString("https://fcm.googleapis.com/fcm/send", jg.ToString)
    Job.GetRequest.SetContentType("application/json")
    Job.GetRequest.SetHeader("Authorization", "key=" & API_KEY)
End Sub


Sub JobDone(job As HttpJob)
    Log(job)
    If job.Success Then
        Log(job.GetString)
    End If
    job.Release
    StopMessageLoop '<-- non ui app only
End Sub
 

Makumbi

Active Member
Licensed User
B4X:
SendMessage("0772433637", "test", "test")
When i send using
B4X:
fm.SubscribeToTopic("general")
and send using SendMessage("general", "Kabojja Junior School", "Sports Day is Tommorrow please come all!!!!") the message one to only one device but wen i use
B4X:
SendMessage("0772433637", "test", "test")
the message does not come to the other device with this mobile number

This is what is in the firebase messaging service
B4X:
#Region  Service Attributes
    #StartAtBoot: False
    
#End Region

Sub Process_Globals
    Private fm As FirebaseMessaging
End Sub

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

Public Sub SubscribeToTopics
    fm.SubscribeToTopic("general") 'you can subscribe to more topics
    fm.SubscribeToTopic("0772433637") '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.SetInfo(Message.GetData.Get("title"), Message.GetData.Get("body"), Main)
    n.Notify(1)
End Sub
 
Last edited:

DonManfred

Expert
Licensed User
the message does not come to the other device with this mobile number
but it does come to the device which has this line in

B4X:
 fm.SubscribeToTopic("0772433637") 'you can subscribe to more topics
?

Are you running your app on the device with this phone number? And this device DO register this topic?
 

Makumbi

Active Member
Licensed User
but it does come to the device which has this line in

B4X:
 fm.SubscribeToTopic("0772433637") 'you can subscribe to more topics
?

Are you running your app on the device with this phone number? And this device DO register this topic?
yes i have installed the app on the device with that number and the number is registered in the app
 

DonManfred

Expert
Licensed User
Don´t know if it makes any difference:

Try to register a Topic atarting with a character.
Like
B4X:
fm.SubscribeToTopic("No0772433637") 'you can subscribe to more topics
Send a Push to the the Topic "No0772433637" in this case. Worth a try.

I am always using Alphanumeric topics (never starting with numbers).
 
Top