Beispiel #1
0
        public async Task <FcmSendResult> Send(IEnumerable <string> tokens, string title, string body, object data)
        {
            var tokensArray = tokens?.ToArray() ?? new string[0];

            if (!tokensArray.Any())
            {
                return(new FcmSendResult());
            }
            if (string.IsNullOrWhiteSpace(title))
            {
                throw new ArgumentException("title is null or empty", nameof(title));
            }
            if (string.IsNullOrWhiteSpace(body))
            {
                throw new ArgumentException("body is null or empty", nameof(body));
            }

            var fcmRequest = new FcmRequest
            {
                Notification = new FcmRequestNotification
                {
                    Title = title,
                    Body  = body
                },
                RegistrationIds = tokensArray
            };

            if (data != null)
            {
                fcmRequest.Data = data;
            }

            _httpClient.DefaultRequestHeaders.Clear();
            _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("key", "=" + _fcmConfiguration.ApiKey);

            using (var httpResponse = await _httpClient.PostAsync(FcmApiUrl,
                                                                  new StringContent(JsonConvert.SerializeObject(fcmRequest),
                                                                                    Encoding.UTF8,
                                                                                    "application/json")))
            {
                var stringResponse = await httpResponse.Content.ReadAsStringAsync();

                if (!httpResponse.IsSuccessStatusCode)
                {
                    throw new FcmSendException(stringResponse, fcmRequest);
                }
                var response = JsonConvert.DeserializeObject <FcmResponse>(stringResponse);
                if (response.Results == null)
                {
                    throw new FcmSendException($"FcmRespose was invalid {stringResponse}", fcmRequest);
                }

                var failedTokens     = FindFailedTokens(response, tokensArray).ToArray();
                var successfulTokens = tokensArray.Where(x => !failedTokens.Contains(x)).ToArray();
                return(new FcmSendResult(successfulTokens, failedTokens));
            }
        }
Beispiel #2
0
        public HttpResponseMessage SendSpectroDataToFCM(FcmRequest model)
        {
            bool IsSuccess = false;

            try
            {
                FCMRootObject FCMData          = new FCMRootObject();
                Notification  NotificationBody = new Notification();
                Data          NotificationData = new Data();

                string dt = ""; // getDeviceID();
                if (!string.IsNullOrWhiteSpace(dt))
                {
                    FCMData.to = dt;
                    NotificationData.Description = model.JsonModel;
                    NotificationBody.title       = "GI ADMIN";
                    NotificationBody.body        = model.JsonModel;
                    FCMData.data = NotificationData;

                    FCMResponse FCMResp = new FCMSender().SendClientNotification(FCMData);
                    IsSuccess = true;
                    return(ControllerContext.Request.CreateResponse(HttpStatusCode.OK, new { FCMResp, IsSuccess }));
                }
                else
                {
                    IsSuccess = false;
                    return(ControllerContext.Request.CreateResponse(HttpStatusCode.OK, new { Response = "Token Invalid.", IsSuccess }));
                }
            }
            catch (Exception ex)
            {
                ERRORREPORTING.Report(ex, Request.RequestUri.AbsoluteUri, new Guid("00000000-0000-0000-0000-000000000000"), "Gujarat_Intrux", "Function Name : SendSpectroDataToFCM()");
                IsSuccess = false;
                return(ControllerContext.Request.CreateResponse(HttpStatusCode.InternalServerError, new { ex.Message, IsSuccess }));
            }
        }
Beispiel #3
0
        public string getFcmRequest(FcmProp fcmProp)
        {
            FcmRequest fcmRequest = new FcmRequest(fcmProp);

            return(objToJson <FcmRequest>(fcmRequest));
        }
Beispiel #4
0
 public FcmSendException(string message, FcmRequest request)
     : base($"FcmMessenger failed with message {message} for {JsonConvert.SerializeObject(request)}")
 {
 }