Comments (2)
@Thomr77 it seems like we were always throwing errors when firebase returns non-successful response:
However as we're now using their new API some statuses/behaviours changed. I can't tell..
from net-core-push-notifications.
@andrei-m-code cheers!
It would be so convenient if it came back as an object (error) so that there is less code on the caller's side to take it apart.
What do you think about replacing
public class FirebaseResponse
{
public string Name { get; set; }
}
with
public class FirebaseResponse
{
public class FirebaseError
{
public class Detail
{
public string Type { get; set; }
public string ErrorCode { get; set; }
}
public int Code { get; set; }
public string Message { get; set; }
public string Status { get; set; }
public Detail[] Details { get; set; }
}
public FirebaseError Error { get; set; }
public bool Success => Error == null;
}
And then just deserialize the response every time
public async Task<FirebaseResponse> SendAsync(object payload, CancellationToken cancellationToken = default)
{
var json = serializer.Serialize(payload);
using var message = new HttpRequestMessage(
HttpMethod.Post,
$"https://fcm.googleapis.com/v1/projects/{settings.ProjectId}/messages:send");
var token = await GetJwtTokenAsync();
message.Headers.Add("Authorization", $"Bearer {token}");
message.Content = new StringContent(json, Encoding.UTF8, "application/json");
using var response = await http.SendAsync(message, cancellationToken);
var responseString = await response.Content.ReadAsStringAsync(cancellationToken);
//if (!response.IsSuccessStatusCode)
//{
// throw new HttpRequestException("Firebase notification error: " + responseString);
//}
return serializer.Deserialize<FirebaseResponse>(responseString);
}
Then it is ready to go for the caller.
Could that work?
I can add this code if this works for you - but I have not done that before so not sure - please advise.
Thanks!
from net-core-push-notifications.
Related Issues (20)
- Push icon HOT 3
- Additional functionality HOT 1
- Non-hardcoded FCM Url HOT 3
- How can distinguish between fem tokens
- Distinguish between fcm tokens HOT 1
- Only HTTP/1.0 and HTTP/1.1 version requests are currently supported HOT 1
- Version 3.1.1 & 3.1.0 - ApnSender Fails With Serialization Error (.Net Core 6.0.7) HOT 3
- ApnsResponse from ApnSender.Send has IsSuccess = true, but I never receive notification? HOT 1
- Cancel a notification HOT 1
- Support for System.Text.JSON HOT 5
- Migrate from legacy HTTP to HTTP v1 HOT 1
- ApnSender.Send throws an Exception when Bad DeviceId is provided. HOT 4
- Usage clarification HOT 2
- For Anyone Who Has Issues with Azure Service & Firebase (Cryptography) - See this... HOT 1
- message.data serialization convention HOT 3
- Exception when sending notifications to iOS devices HOT 1
- work with apple wallet passbook HOT 1
- FirebaseSettings are a record thus not allowing binding to appsettings.json HOT 1
- Firebase CryptographicException when deployed to production server (NOT Azure)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from net-core-push-notifications.