Hi,
I need to receive Notifications 24/7 even when App is killed or the phone is in deepsleep. I use the following as Receiver:
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
While the App is in Foreground, it works fine.
While the App is in Background, Notification is received, but no Sound and a different Icon
While the App is Killed or Phone is Sleeping, no action at all.
How can I prevent this from happening? I read something about a WakefulBroadcastReceiver in a recently reply like:
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Is this something what I can do with B4A?
Kind regards,
André
			
			I need to receive Notifications 24/7 even when App is killed or the phone is in deepsleep. I use the following as Receiver:
			
				B4X:
			
		
		
		Sub Process_Globals
    Public fm As FirebaseMessaging
    Public xKeer As Int
End Sub
'Called when an intent is received.
'Do not assume that anything else, including the starter service, has run before this method.
Private Sub Receiver_Receive (FirstTime As Boolean, StartingIntent As Intent)
    If FirstTime Then
        fm.Initialize("fm")
        fm_TokenRefresh("")
    End If
    fm.HandleIntent(StartingIntent)
End Sub
Public Sub SubscribeToTopics
    fm.SubscribeToTopic("strooi") 'you can subscribe to more topics
End Sub
Sub fm_MessageArrived (Message As RemoteMessage)
    Log("Message: "&Message.GetData)
    SetAlarm
    Notify("Er is een notifcation binnen")
End Sub
Sub fm_TokenRefresh(Token As String)
    Wait For (Starter.GetAdvertisingId) Complete (Id As String)
    If Id <> "" Then
        Starter.ParameterVast=Starter.ParameterVast.Replace("&deviceid="&EigenFuncties.GetDeviceId,"&deviceid="&Id)
        'Log(Starter.ParameterVast)
        EigenFuncties.DeviceID=Id
    End If
    Log("DeviceID: "&Id)
    Log("EigenID: "&EigenFuncties.DeviceID)
    Log("fmID: "&fm.Token)
    Starter.fmToken=fm.Token
    CallSub(Starter,"RegistreerToken")
End Sub
Sub SetAlarm
    Dim i As Intent
    Dim Begin As Long
    Dim H, M, S As Int
    Begin = DateTime.Now
    H = DateTime.GetHour(Begin)
    M = DateTime.GetMinute(Begin)
    S = DateTime.GetSecond(Begin)
        
    i.Initialize("android.intent.action.SET_ALARM", "")
       i.PutExtra("android.intent.extra.alarm.HOUR", H)
       i.PutExtra("android.intent.extra.alarm.MINUTES", M+1)
    i.PutExtra("android.intent.extra.alarm.MESSAGE", "CIRIS Strooi")
       i.PutExtra("android.intent.extra.alarm.SKIP_UI", True)
      StartActivity(i)
End Sub
Sub Notify(Body As String)
    Dim rp As RuntimePermissions
    Dim folder As String = rp.GetSafeDirDefaultExternal("shared")
    Dim FileName As String = "shotgun.mp3"
    'copy the file to the shared folder
    File.Copy(File.DirAssets, FileName, folder, FileName)
    Dim n As NB6
    n.Initialize("strooi", Application.LabelName, "HIGH")
    n.SmallIcon(LoadBitmapResize(File.DirAssets, "icon.png", 32dip, 32dip, True))
    'disable the default sound
    n.SetDefaults(False, True, True)
    'set custom sound
    n.CustomSound(CreateFileProviderUri(folder, FileName))
    n.BadgeIconType("SMALL")
    n.Number(6)
    Dim Notification As Notification = n.Build("CIRIS Strooi", Body, "CIRIS Strooi", Oproep)
    Notification.Notify(299)
End Sub
Sub CreateFileProviderUri (Dir As String, FileName As String) As Object
    Dim FileProvider As JavaObject
    Dim context As JavaObject
    context.InitializeContext
    FileProvider.InitializeStatic("android.support.v4.content.FileProvider")
    Dim f As JavaObject
    f.InitializeNewInstance("java.io.File", Array(Dir, FileName))
    Return FileProvider.RunMethod("getUriForFile", Array(context, Application.PackageName & ".provider", f))
End SubWhile the App is in Foreground, it works fine.
While the App is in Background, Notification is received, but no Sound and a different Icon
While the App is Killed or Phone is Sleeping, no action at all.
How can I prevent this from happening? I read something about a WakefulBroadcastReceiver in a recently reply like:
			
				B4X:
			
		
		
		class BackgroundFcmReceiver : WakefulBroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
    val extras = intent.extras?.keySet()
    if (extras != null) {
        for (key in extras) {
            Log.d("TAG", "$key")
        }
    }
}Is this something what I can do with B4A?
Kind regards,
André
 
				 
 
		 
 
		 
 
		 
 
		