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)); } }
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 })); } }
public string getFcmRequest(FcmProp fcmProp) { FcmRequest fcmRequest = new FcmRequest(fcmProp); return(objToJson <FcmRequest>(fcmRequest)); }
public FcmSendException(string message, FcmRequest request) : base($"FcmMessenger failed with message {message} for {JsonConvert.SerializeObject(request)}") { }