private async Task <PushMessage> RecordPushMessageResult(GoogleFCMResponseModel result, PushMessage pushValue) { FPS_PushHistory pushMessage = new FPS_PushHistory(); pushMessage.MessageSN = DateTime.Now.ToString("yyyyMMddhhmmss") + _serialAndEncryption.CreateUniqueSN(); pushMessage.DeviceID = pushValue.TargetDeviceID; pushMessage.Message_Data = pushValue.Data.isNull()? "" : pushValue.Data.ToString(); pushMessage.Message_Noti = pushValue.Notification.isNull()? "" : pushValue.Notification.ToString(); //目前僅使用單Device推播 pushMessage.Status = 1.Equals(result.success) ? "S" : "F"; pushMessage.Error = 1.Equals(result.success) ? "" : (result.results.FirstOrDefault().error); pushMessage.FCMAuth = pushValue.FCMAuth; pushMessage.PushID = result.multicast_id.ToString(); pushMessage.PushTime = DateTime.Now; var addRes = await _pushHistoryRepository.AddFPS_PushHistory(pushMessage); PushMessage apiBack = new PushMessage(); apiBack.MessageSN = pushMessage.MessageSN; apiBack.Status = pushMessage.Status; apiBack.ErrorMsg = pushMessage.Error; apiBack.DataTime = pushMessage.PushTime.ToString("yyyy/MM/dd HH:mm:ss"); return(apiBack); }
// 發送推播訊息 public async Task <PushMessage> PushAppMessage(PushMessage value) { var googleRespone = await SendPushMessageToGoogle(value); GoogleFCMResponseModel response = null; if (200.Equals(googleRespone._resultCode)) { try { response = JsonConvert.DeserializeObject <GoogleFCMResponseModel>(googleRespone._resultMsg); } catch (Exception ex) { ThrowCustomException.Exception550("", ex); } } else { string errMsg = "GoogleServer發生錯誤"; if (400.Equals(googleRespone._resultCode)) { ThrowCustomException.Exception451("JsonObject發生錯誤"); } else if (401.Equals(googleRespone._resultCode)) { ThrowCustomException.Exception453(); // ( Authorized不存在 ) } else { errMsg = googleRespone._resultMsg; } ThrowCustomException.Exception550(errMsg, null); } //紀錄推播結果 value = await RecordPushMessageResult(response, value); return(value); }