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);
        }