/// <summary> /// Логгирует ответы сервера Firebase /// </summary> /// <param name="response"></param> /// Подробнее здесь: /// https://firebase.google.com/docs/cloud-messaging/server#response private void CheckFirebaseResponse(FirebaseResponse response) { Log.Info(LoggerStrings.LOG_RESPONSERECEIVED); if (response.Failure == 0 && (response.Canonical_Ids == null || response.Canonical_Ids == "0")) { //TODO: что, если вернется несколько messageID? Log.Info(LoggerStrings.LOG_MESSAGEOK(response.Message_Id)); } else { if (response.Results != null) { foreach (var result in response.Results) { if (result.Error != null) { Log.Warn(LoggerStrings.LOG_ERRORPUSHINGMESSAGE(result.Error)); } else { Log.Warn(LoggerStrings.LOG_UNKNOWNRESULT); } } } } }
/// <summary> /// Отсылает сообщение в Firebase и пишет лог /// </summary> /// <param name="message"></param> public async void SendMessage(PushMessage message) { try { Log.Info(LoggerStrings.LOG_SENDINGPUSHMESSAGE(message.Message.Title)); var response = await SendJSON(message); CheckFirebaseResponse(response); } catch (JsonReaderException readerEx) //пришёл корявый JSON. Такие ошибки надо отлавливать, чтобы быть готовым ко всему, что Firebase нам пошлет { Log.Error(LoggerStrings.LOG_BADJSON, readerEx); } catch (Exception ex) //Код ответа != 200 или неизвестная ошибка { Log.Error(LoggerStrings.LOG_CODENOT200ORUNKNOWNERROR, ex); } finally { Log.Error(LoggerStrings.LOG_SEPARATOR); } }