Goedemorgen,
Wat wil ik bereiken?
Ik wil het voor elkaar krijgen om op een Android telefoon i.c.m. Xamarin Forms een background service te draaien die netwerk berichten ontvangt. De service dient de berichten te verspreiden binnen de applicatie. Zo wil ik eventueel kunnen bepalen of het binnengekomen netwerkbericht als Android Notificatie weergegeven moet worden. Ook wil ik de service vanuit een activity kunnen bedienen en de berichten in een activity kunnen verwerken.
Wat heb ik al werkend?
Het probleem ligt momenteel bij de HubBroadcastReceiver. Deze wordt geactiveerd wanneer een bericht van de server binnenkomt. Maar wanneer ik een notificatie wil tonen zonder foreground service en zonder activity (bij het gebruiken van mijn eigen NotificationManager class) dan wordt de volgende foutmelding weergegeven:
Wanneer ik er voor zorg dat de HubBroadcastReceiver een IntentService (NotificationService) start als ForegroundService welke direct een Android Notificatie toont, dan krijg ik de foutmelding niet. Want ik begrijp dat de HubBroadcastReceiver dan gebruik maakt van het process wat op de voorgrond is gestart en dus niet zomaar afgebroken wordt door Android.
Maar ik wil niet dat er constant een Android Notificatie zichtbaar is. Ik wil net zoals bijv. Whatsapp alleen wanneer dat nodig is een notificatie tonen, maar wel controlle hebben over de communicatie met mijn server.
Overzicht van de opstelling
:strip_exif()/f/image/cDKUU1M5TpZsLpbNifCulVrJ.jpg?f=fotoalbum_large)
Hierbij is MessageReceiver de HubBroadcastReceiver.
Informatie over opstelling
Android versie: 8.0.0
Android SDK: Android SDK Platform 28
Mijn vragen:
Wat wil ik bereiken?
Ik wil het voor elkaar krijgen om op een Android telefoon i.c.m. Xamarin Forms een background service te draaien die netwerk berichten ontvangt. De service dient de berichten te verspreiden binnen de applicatie. Zo wil ik eventueel kunnen bepalen of het binnengekomen netwerkbericht als Android Notificatie weergegeven moet worden. Ook wil ik de service vanuit een activity kunnen bedienen en de berichten in een activity kunnen verwerken.
Wat heb ik al werkend?
- BootCompletedReceiver.
Een broadcast receiver welke triggered on device boot.
Deze heeft als taak om de JobService te starten. - HubJobService.
Deze JobService is verantwoordelijk om de connectie naar een server open te houden voor het ontvangen van berichten.
Binnenkomende berichten worden via een intent met custom explicit action verspreid binnen de applicatie. - HubBroadcastReceiver
Een BroadcastReceiver welke triggered op de custom action van de HubJobService
Maar.... zie verder
Het probleem ligt momenteel bij de HubBroadcastReceiver. Deze wordt geactiveerd wanneer een bericht van de server binnenkomt. Maar wanneer ik een notificatie wil tonen zonder foreground service en zonder activity (bij het gebruiken van mijn eigen NotificationManager class) dan wordt de volgende foutmelding weergegeven:
De foutmelding vind plaats bij de OnReceive() van de HubBroadcastReceiver.Background execution not allowed: receiving Intent { act=...HUB_MESSAGE_ACTION flg=0x10 } to ...HubBroadcastReceiver
Wanneer ik er voor zorg dat de HubBroadcastReceiver een IntentService (NotificationService) start als ForegroundService welke direct een Android Notificatie toont, dan krijg ik de foutmelding niet. Want ik begrijp dat de HubBroadcastReceiver dan gebruik maakt van het process wat op de voorgrond is gestart en dus niet zomaar afgebroken wordt door Android.
Maar ik wil niet dat er constant een Android Notificatie zichtbaar is. Ik wil net zoals bijv. Whatsapp alleen wanneer dat nodig is een notificatie tonen, maar wel controlle hebben over de communicatie met mijn server.
Overzicht van de opstelling
:strip_exif()/f/image/cDKUU1M5TpZsLpbNifCulVrJ.jpg?f=fotoalbum_large)
Hierbij is MessageReceiver de HubBroadcastReceiver.
Informatie over opstelling
Android versie: 8.0.0
Android SDK: Android SDK Platform 28
Mijn vragen:
- Is deze opstelling juist?
- Wat kan ik er aan veranderen zodat ik het wel op de achtergrond kan laten draaien?
[ Voor 3% gewijzigd door matwork op 12-06-2020 12:20 ]