#Region Service Attributes
#StartAtBoot: True
#StartCommandReturnValue: android.app.Service.START_STICKY
#End Region
Sub Process_Globals
Dim fm As FirebaseMessaging
Dim Token As String
Dim n As Notification
Dim tim As Timer
End Sub
Sub Service_Create
Token = StateManager.getSetting("fbtoken")
End Sub
Public Sub SubscribeToTopics
fm.SubscribeToTopic("general") 'you can subscribe to more topics
Log("SubscribedToTopics")
End Sub
Sub Service_Start (StartingIntent As Intent)
If fm.IsInitialized Then
fm = Null
End If
fm.Initialize("fm")
tim.Initialize("tim", 2000) 'pause for getting the token
tim.Enabled = True
Log("FB.tim.Enabled = True")
If StartingIntent.IsInitialized And fm.HandleIntent(StartingIntent) Then Return
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")
Log(Message.GetData) '(MyMap) {priority=high, vibration=1, body=some_text, sound=default, title=Notif_title, requestId=4454}
Dim requestId As String = Message.GetData.Get("requestId")
orders.CurOrderID = requestId 'user's order - send and receive your keys
orders.push = True 'flag to update the app interface for new push message
If IsPaused(orders) Then
Else
CallSub(orders, "Activity_Resume")
End If
n.Initialize
n.Icon = "icon"
n.SetInfo(title, body, orders)
n.AutoCancel = True
n.Notify(1)
End Sub
Sub Service_Destroy
fm.UnsubscribeFromTopic("general")
End Sub
Sub fm_TokenRefresh
tim_Tick
End Sub
Sub tim_Tick
If Starter.InternetConnected = False Then
Log("FB.timer: no Internet")
Return
End If
Dim a As String = fm.Token
If a.Length > 5 Then 'token may be "0" on some devices for some time
tim.Enabled = False
If a <> Token Then
Log("In Refresh " & $"Token(${fm.Token})"$)
Else 'old existing token
Log("In Service_Create " & $"Token(${fm.Token})"$)
End If
Token = a
Dim userId As String = StateManager.GetSetting("userId")
If userId <> "" Then 'if already registered user
Starter.cls.Send_token 'send new token to my server
End If
StateManager.SetSetting("fbtoken", Token)
StateManager.SaveSettings
Else
Log("FB token is empty!")
SubscribeToTopics
tim.Enabled = True
End If
End Sub