public static IServiceCollection AddFcmConfig(this IServiceCollection services, Func <FcmConfig> func) { FcmConfig config = func.Invoke(); services.AddFcmConfig(config); return(services); }
private static FcmConfig ReadConfig(StreamReader reader) { FcmConfig config = null; try { string serverKey = reader.ReadLine(); string destinationDeviceId = reader.ReadLine(); reader.Close(); config = new FcmConfig { ServerKey = serverKey, DestinationDeviceId = destinationDeviceId }; } catch (Exception ex) { DisplayError("ReadConfig", ex); } finally { reader.Close(); } return(config); }
private static async Task SendFcmPushNotification(FcmConfig config, string title, string messageBody) { const string BASEURL = "https://fcm.googleapis.com/fcm/send"; var messageInformation = new FcmMessage() { notification = new Payload() { title = title, body = messageBody }, data = null, to = config.DestinationDeviceId }; //Object to JSON STRUCTURE => using Newtonsoft.Json; string jsonMessage = JsonConvert.SerializeObject(messageInformation); // Create request to Firebase API var request = new HttpRequestMessage(HttpMethod.Post, BASEURL); request.Headers.TryAddWithoutValidation("Authorization", "key=" + config.ServerKey); request.Content = new StringContent(jsonMessage, Encoding.UTF8, "application/json"); HttpResponseMessage result; using (var client = new HttpClient()) { result = await client.SendAsync(request); } Console.WriteLine("Result = " + result.StatusCode.ToString()); }
public static IServiceCollection AddFcmConfig(this IServiceCollection services, Func <IServiceProvider, FcmConfig> func) { IServiceProvider provider = services.BuildServiceProvider(); FcmConfig config = func(provider); services.AddFcmConfig(config); return(services); }
static void Main(string[] args) { //////////////////////////////////////////////////////////////////// // it is expected to have 3 args. // - config file (text) // - message // - title //////////////////////////////////////////////////////////////////// if (args.Length != 3) { DisplayError("Need 3 arguments: (1) config file, (2) message, (3) title"); return; } string configPath = args[0]; string messageBody = args[1]; string title = args[2]; if (!File.Exists(configPath)) { DisplayError($"File not found: {configPath}"); return; } FcmConfig config = null; using (var reader = new StreamReader(File.OpenRead(configPath))) { config = ReadConfig(reader); } if (config == null) { return; } //error will be displayed, so just exit Task.Run(() => SendFcmPushNotification(config, title, messageBody)) .GetAwaiter() .GetResult(); Console.WriteLine("End"); }
public static IServiceCollection AddFcmConfig(this IServiceCollection services, FcmConfig config) { services.AddSingleton <FcmConfig>(config); return(services); }