public override void OnMessageReceived(RemoteMessage message) { //Log.Debug(TAG, "From: " + message.From); //var body = message.GetNotification().Body; //Log.Debug(TAG, "Notification Message Body: " + body); Log.Info(TAG, $"Received a firebase request from {message.From}."); if (message.From == $"/topics/{MainActivity.CHANNEL_ID}") { Log.Debug(TAG, "Received an announcement."); SendNotification(message.GetNotification().Body, message.GetNotification().Title, message.Data); } else if (message.From == $"/topics/{MainActivity.UPDATE_CHANNEL_NAME}" && !Preferences.ContainsKey("DisableAutoUpdate")) { Log.Debug(TAG, "Received an update request."); if (!message.Data.ContainsKey("region") || !int.TryParse(message.Data["region"], out var region)) { Log.Warn(TAG, "Firebase message missing region."); return; } if (region < 1 || region > 2) { Log.Warn(TAG, "Invalid region for update request."); return; } string preferencesKey = ""; switch (region) { case 1: preferencesKey = $"InstalledScript_{FGORegion.Jp}"; break; case 2: preferencesKey = $"InstalledScript_{FGORegion.Na}"; break; } if (Preferences.Get(preferencesKey, null) == null) { Log.Warn(TAG, "User hasn't installed any script for this region."); return; } var data = new Data.Builder(); data.PutInt("region", region); data.PutString("preferencesKey", preferencesKey); var finalData = data.Build(); var builder = OneTimeWorkRequest.Builder.From <RayshiftTranslationUpdateWorker>(); builder.SetInputData(finalData); OneTimeWorkRequest request = builder.Build(); WorkManager.Instance.Enqueue(request); } }
public async Task <string> StartUploadForIdAsync(Guid id) { Data.Builder data = new Data.Builder(); data.PutString("id", id.ToString()); OneTimeWorkRequest oneTimeWorkRequest = OneTimeWorkRequest.Builder.From <RandomUploadWorker>() .SetInputData(data.Build()) .Build(); WorkManager.Instance.Enqueue(oneTimeWorkRequest); ILifecycleOwner owner = ProcessLifecycleOwner.Get(); //Observe what happened to this request so we can notify the UI WorkManager.Instance.GetWorkInfoByIdLiveData(oneTimeWorkRequest.Id).Observe(owner, new RandomWorkerObserver()); return(oneTimeWorkRequest.Id.ToString()); }
public void CreateUniqueWorker <T>() where T : Worker { OneTimeWorkRequest oneTimeWorkRequest = OneTimeWorkRequest.Builder.From <T>().Build(); WorkManager.GetInstance(Platform.AppContext).EnqueueUniqueWork(typeof(T).Name, ExistingWorkPolicy.Replace, oneTimeWorkRequest); }