public override void OnMessageReceived(RemoteMessage message) { var dependencyContainer = AndroidDependencyContainer.Instance; var userIsLoggedIn = dependencyContainer.UserAccessManager.CheckIfLoggedIn(); if (!userIsLoggedIn) { return; } var keyValueStorage = dependencyContainer.KeyValueStorage; if (!shouldScheduleSyncJob(keyValueStorage)) { return; } var jobClass = Java.Lang.Class.FromType(typeof(SyncJobService)); var jobScheduler = (JobScheduler)GetSystemService(JobSchedulerService); var serviceName = new ComponentName(this, jobClass); var jobInfoBuilder = new JobInfo.Builder(SyncJobServiceJobId, serviceName) .SetRequiredNetworkType(NetworkType.Any); if (PieApis.AreAvailable) { jobInfoBuilder = jobInfoBuilder.SetImportantWhileForeground(true); } jobScheduler.Schedule(jobInfoBuilder.Build()); keyValueStorage.SetBool(HasPendingSyncJobServiceScheduledKey, true); keyValueStorage.SetDateTimeOffset(LastSyncJobScheduledAtKey, DateTimeOffset.Now); }