public async Task Unsubscribe(string topic, string token) { if (bool.Parse(_settingsKeeper.GetSetting("EnableFcm").Value)) { var request = new TopicManagementRequest { RegistrationTokens = new[] { token }, Topic = $"/topics/{topic}" }; await _fcmClient.UnsubscribeFromTopic(request); } }
public async Task SubscribeAsync(ApplicationUser user, Topic topic, CancellationToken cancellationToken = default(CancellationToken)) { using (var context = factory.Create()) { var registrationTokens = await context.DbSet <UserRegistration>() .Where(x => x.User == user) .Where(x => x.DeactivationDate == null) .Select(x => x.RegistrationToken) .ToArrayAsync(cancellationToken); var topicManagementRequest = new TopicManagementRequest { Topic = topic.Name, RegistrationTokens = registrationTokens }; await client.SubscribeToTopic(topicManagementRequest, cancellationToken); } }
private async Task <TopicManagementResponse> SendAsync(string path, TopicManagementRequest request, CancellationToken cancellationToken) { if (request == null) { throw new ArgumentNullException("request"); } // Build the URL: string url = $"https://iid.googleapis.com/{path}"; // Construct the HTTP Message: HttpRequestMessageBuilder httpRequestMessageBuilder = new HttpRequestMessageBuilder(url, HttpMethod.Post) // Add Option to use the Access Token Auth Header: .AddHeader("access_token_auth", "true") // Add the Serialized Request Message: .SetStringContent(serializer.SerializeObject(request), Encoding.UTF8, MediaTypeNames.ApplicationJson); try { return(await httpClient .SendAsync <TopicManagementResponse>(httpRequestMessageBuilder, cancellationToken) .ConfigureAwait(false)); } catch (FcmHttpException exception) { // Get the Original HTTP Response: var response = exception.HttpResponseMessage; // Read the Content: var content = await response.Content .ReadAsStringAsync() .ConfigureAwait(false); // Parse the Error: var error = serializer.DeserializeObject <TopicMessageResponseError>(content); // Throw the Exception: throw new FcmTopicManagementException(error, content); } }
public Task <TopicManagementResponse> UnsubscribeFromTopic(TopicManagementRequest request, CancellationToken cancellationToken = new CancellationToken()) { return(Task.FromResult(new TopicManagementResponse())); }
public Task <TopicManagementResponse> UnsubscribeFromTopic(TopicManagementRequest request, CancellationToken cancellationToken = default(CancellationToken)) { string iidUnsubscribePath = "iid/v1:batchRemove"; return(SendAsync(iidUnsubscribePath, request, cancellationToken)); }
public Task <TopicManagementResponse> SubscribeToTopic(TopicManagementRequest request, CancellationToken cancellationToken = default(CancellationToken)) { string iidSubscribePath = "iid/v1:batchAdd"; return(SendAsync(iidSubscribePath, request, cancellationToken)); }