public override void OnMessageReceived(RemoteMessage message)
        {
            var notification = message.GetNotification();

            Log.Debug(TAG, $"From: {message.From}");
            Log.Debug(TAG, $"Data: {message.Data.ToString()}");
            Log.Debug(TAG, $"{ message.ToString() }");

            if (PushMessageManager.IsMarketingCloudPush(message.Data))
            {
                Log.Debug(TAG, "Marketing Cloud Message");
                MarketingCloudSdk.RequestSdk(new SdkReady {
                    OnReady = sdk => sdk.PushMessageManager.HandleMessage(message.Data)
                });
            }
            else
            {
                Log.Debug(TAG, "Normal Message");
                SendNotification(notification, message.Data);
            }
        }
        public override async void OnMessageReceived(RemoteMessage message)
        {
            if (!_isInitialized)
            {
                await Initialize();
            }

#if DEBUG
            Log.Debug(TAG + " : ", message.ToString());
#endif
            if (message.GetNotification() != null)
            {
                //These is how most messages will be received
#if DEBUG
                Log.Debug(TAG + " : ", message.GetNotification().Body);
#endif
                SendNotification(message.GetNotification().Body);
            }
            else
            {
                var cmd = message.Data.FirstOrDefault(x => x.Key.Equals("cmd"));
                var msg = message.Data.FirstOrDefault(x => x.Key.Equals("msg"));

                var messageBody = $"{cmd.Value} : {msg.Value}";

#if DEBUG
                Log.Debug(TAG + " : ", messageBody);
#endif
                _mvxMessenger.Publish(new NotificationMessage(this, messageBody, message.Data));

                if (messageBody.Contains("Agent Location Change"))
                {
                    var gid = message.Data.FirstOrDefault(x => x.Key.Equals("gid"));
                    _mvxMessenger.Publish(new TeamAgentLocationUpdatedMessage(this, gid.Value, msg.Value));
                }
                else if (messageBody.Contains("Marker"))
                {
                    var opId     = message.Data.FirstOrDefault(x => x.Key.Equals("opID"));
                    var markerId = message.Data.FirstOrDefault(x => x.Key.Equals("markerID"));

                    if (!string.IsNullOrWhiteSpace(opId.Value) && !string.IsNullOrWhiteSpace(markerId.Value))
                    {
                        await _backgroundDataUpdaterService.UpdateMarker(opId.Value, markerId.Value).ConfigureAwait(false);
                    }
                }
                else if (messageBody.Contains("Link"))
                {
                    var opId   = message.Data.FirstOrDefault(x => x.Key.Equals("opID"));
                    var linkId = message.Data.FirstOrDefault(x => x.Key.Equals("linkID"));

                    if (!string.IsNullOrWhiteSpace(opId.Value) && !string.IsNullOrWhiteSpace(linkId.Value))
                    {
                        await _backgroundDataUpdaterService.UpdateLink(opId.Value, linkId.Value).ConfigureAwait(false);
                    }
                }
                else if (messageBody.Contains("Map Change"))
                {
                    var opId = message.Data.FirstOrDefault(x => x.Key.Equals("opID"));
                    if (!string.IsNullOrWhiteSpace(opId.Value))
                    {
                        await _backgroundDataUpdaterService.UpdateOperation(opId.Value).ConfigureAwait(false);
                    }
                }
            }
        }