#Region Service Attributes
#StartAtBoot: true
#End Region
Sub Process_Globals
Public fm As FirebaseMessaging
End Sub
Sub Service_Create
fm.Initialize("fm")
End Sub
Public Sub SubscribeToTopics(Family As String)
fm.SubscribeToTopic(Family) 'you can subscribe to more topics
Log(Family)
Log (fm.Token)
End Sub
Public Sub UnsuscribeFromTopics(Family As String)
fm.UnsubscribeFromTopic(Family)
Log(Family)
Log(fm.Token)
End Sub
Sub Service_Start (StartingIntent As Intent)
If StartingIntent.IsInitialized And fm.HandleIntent(StartingIntent) Then Return
End Sub
Sub fm_TokenRefresh (Token As String)
Log("New Token: " & Token)
End Sub
Sub fm_MessageArrived (Message As RemoteMessage)
Log("Message arrived")
Log($"Message data: ${Message.GetData}"$)
Dim Title As String = Message.GetData.Get("title")
Dim Body As String = Message.GetData.Get("body")
Dim n As Notification = CreateNotification(Title, Body, "notificon", Main, True, True)
n.Notify(DateTime.Now)
End Sub
Sub Service_Destroy
End Sub
Private Sub CreateNotification(Title As String, Content As String, Icon As String, TargetActivity As Object, Sound As Boolean, Vibrate As Boolean) As Notification
Dim p As Phone
If p.SdkVersion >= 21 Then
Dim nb As NotificationBuilder
nb.Initialize
nb.DefaultSound = Sound
nb.DefaultVibrate = Vibrate
nb.ContentTitle = Title
nb.ContentText = Content
nb.setActivity(TargetActivity)
nb.SmallIcon = Icon
nb.DefaultLight = True
nb.OnGoingEvent = False
If p.SdkVersion >= 26 Then
Dim ctxt As JavaObject
ctxt.InitializeContext
Dim manager As JavaObject
manager.InitializeStatic("android.app.NotificationManager")
Dim Channel As JavaObject
Dim importance As String
If Sound Then importance = "IMPORTANCE_DEFAULT" Else importance = "IMPORTANCE_LOW"
Dim ChannelVisibleName As String = Application.LabelName
Channel.InitializeNewInstance("android.app.NotificationChannel", Array("MyChannelId1", ChannelVisibleName, manager.GetField(importance)))
manager = ctxt.RunMethod("getSystemService", Array("notification"))
manager.RunMethod("createNotificationChannel", Array(Channel))
Dim jo As JavaObject = nb
jo.RunMethod("setChannelId", Array("MyChannelId1"))
End If
Return nb.GetNotification
Else
Dim n As Notification
n.Initialize
n.Sound = Sound
n.Vibrate = Vibrate
n.Icon = Icon
n.SetInfo(Title, Content, TargetActivity)
Return n
End If
End Sub