public override void OnReceive(Context context, Intent intent) { IDictionary <string, object> parameters = new Dictionary <string, object>(); var extras = intent.Extras; if (extras != null && !extras.IsEmpty) { foreach (var key in extras.KeySet()) { parameters.Add(key, $"{extras.Get(key)}"); System.Diagnostics.Debug.WriteLine(key, $"{extras.Get(key)}"); } } FirebasePushNotificationManager.RegisterDelete(parameters); }
public override void OnReceive(Context context, Intent intent) { IDictionary <string, object> parameters = new Dictionary <string, object>(); var extras = intent.Extras; if (extras != null && !extras.IsEmpty) { foreach (var key in extras.KeySet()) { parameters.Add(key, $"{extras.Get(key)}"); System.Diagnostics.Debug.WriteLine(key, $"{extras.Get(key)}"); } } CrossFirebasePushNotification.Current.NotificationHandler?.OnReceived(parameters); FirebasePushNotificationManager.RegisterData(parameters); NotificationManager manager = context.GetSystemService(Context.NotificationService) as NotificationManager; var notificationId = extras.GetInt(DefaultPushNotificationHandler.ActionNotificationIdKey, -1); if (notificationId != -1) { var notificationTag = extras.GetString(DefaultPushNotificationHandler.ActionNotificationTagKey, string.Empty); if (notificationTag == null) { manager.Cancel(notificationId); } else { manager.Cancel(notificationTag, notificationId); } } /*Intent resultIntent = context.PackageManager.GetLaunchIntentForPackage(context.PackageName); * resultIntent.SetFlags(ActivityFlags.NewTask); * context.StartActivity(resultIntent);*/ context.UnregisterReceiver(FirebasePushNotificationManager.ActionReceiver); FirebasePushNotificationManager.ActionReceiver = null; }
public override void OnNewToken(string p0) { // Get updated InstanceID token. var refreshedToken = p0; //Resubscribe to topics since the old instance id isn't valid anymore //CrossFirebasePushNotification.Current.SubscribedTopics. foreach (var t in CrossFirebasePushNotification.Current.SubscribedTopics) { FirebaseMessaging.Instance.SubscribeToTopic(t); } var editor = Android.App.Application.Context.GetSharedPreferences(FirebasePushNotificationManager.KeyGroupName, FileCreationMode.Private).Edit(); editor.PutString(FirebasePushNotificationManager.FirebaseTokenKey, refreshedToken); editor.Commit(); // CrossFirebasePushNotification.Current.OnTokenRefresh?.Invoke(this,refreshedToken); FirebasePushNotificationManager.RegisterToken(refreshedToken); System.Diagnostics.Debug.WriteLine($"REFRESHED TOKEN: {refreshedToken}"); }
public override void OnMessageReceived(RemoteMessage message) { var parameters = new Dictionary <string, object>(); var notification = message.GetNotification(); if (notification != null) { if (!string.IsNullOrEmpty(notification.Body)) { parameters.Add("body", notification.Body); } if (!string.IsNullOrEmpty(notification.BodyLocalizationKey)) { parameters.Add("body_loc_key", notification.BodyLocalizationKey); } var bodyLocArgs = notification.GetBodyLocalizationArgs(); if (bodyLocArgs != null && bodyLocArgs.Any()) { parameters.Add("body_loc_args", bodyLocArgs); } if (!string.IsNullOrEmpty(notification.Title)) { parameters.Add("title", notification.Title); } if (!string.IsNullOrEmpty(notification.TitleLocalizationKey)) { parameters.Add("title_loc_key", notification.TitleLocalizationKey); } var titleLocArgs = notification.GetTitleLocalizationArgs(); if (titleLocArgs != null && titleLocArgs.Any()) { parameters.Add("title_loc_args", titleLocArgs); } if (!string.IsNullOrEmpty(notification.Tag)) { parameters.Add("tag", notification.Tag); } if (!string.IsNullOrEmpty(notification.Sound)) { parameters.Add("sound", notification.Sound); } if (!string.IsNullOrEmpty(notification.Icon)) { parameters.Add("icon", notification.Icon); } if (notification.Link != null) { parameters.Add("link_path", notification.Link.Path); } if (!string.IsNullOrEmpty(notification.ClickAction)) { parameters.Add("click_action", notification.ClickAction); } if (!string.IsNullOrEmpty(notification.Color)) { parameters.Add("color", notification.Color); } } foreach (var d in message.Data) { if (!parameters.ContainsKey(d.Key)) { parameters.Add(d.Key, d.Value); } } //Fix localization arguments parsing var localizationKeys = new string[] { "title_loc_args", "body_loc_args" }; foreach (var locKey in localizationKeys) { if (parameters.ContainsKey(locKey) && parameters[locKey] is string parameterValue) { if (parameterValue.StartsWith("[") && parameterValue.EndsWith("]") && parameterValue.Length > 2) { var arrayValues = parameterValue.Substring(1, parameterValue.Length - 2); parameters[locKey] = arrayValues.Split(',').Select(t => t.Trim()).ToArray(); } else { parameters[locKey] = new string[] { }; } } } FirebasePushNotificationManager.RegisterData(parameters); CrossFirebasePushNotification.Current.NotificationHandler?.OnReceived(parameters); }
public override void OnMessageReceived(RemoteMessage message) { var parameters = new Dictionary <string, object>(); var notification = message.GetNotification(); if (notification != null) { if (!string.IsNullOrEmpty(notification.Body)) { parameters.Add("body", notification.Body); } if (!string.IsNullOrEmpty(notification.BodyLocalizationKey)) { parameters.Add("body_loc_key", notification.BodyLocalizationKey); } var bodyLocArgs = notification.GetBodyLocalizationArgs(); if (bodyLocArgs != null && bodyLocArgs.Any()) { parameters.Add("body_loc_args", bodyLocArgs); } if (!string.IsNullOrEmpty(notification.Title)) { parameters.Add("title", notification.Title); } if (!string.IsNullOrEmpty(notification.TitleLocalizationKey)) { parameters.Add("title_loc_key", notification.TitleLocalizationKey); } var titleLocArgs = notification.GetTitleLocalizationArgs(); if (titleLocArgs != null && titleLocArgs.Any()) { parameters.Add("title_loc_args", titleLocArgs); } if (!string.IsNullOrEmpty(notification.Tag)) { parameters.Add("tag", notification.Tag); } if (!string.IsNullOrEmpty(notification.Sound)) { parameters.Add("sound", notification.Sound); } if (!string.IsNullOrEmpty(notification.Icon)) { parameters.Add("icon", notification.Icon); } if (notification.Link != null) { parameters.Add("link_path", notification.Link.Path); } if (!string.IsNullOrEmpty(notification.ClickAction)) { parameters.Add("click_action", notification.ClickAction); } if (!string.IsNullOrEmpty(notification.Color)) { parameters.Add("color", notification.Color); } } foreach (var d in message.Data) { if (!parameters.ContainsKey(d.Key)) { parameters.Add(d.Key, d.Value); } } FirebasePushNotificationManager.RegisterData(parameters); CrossFirebasePushNotification.Current.NotificationHandler?.OnReceived(parameters); }