Beispiel #1
0
        public async Task <bool> SendPush(PushNotification push)
        {
            using (var client = FirebaseClient())
            {
                var response = await client.PostAsJsonAsync("", push);

                if (response.IsSuccessStatusCode)
                {
                    string result = response.Content.ReadAsStringAsync().Result;

                    if (!string.IsNullOrWhiteSpace(result))
                    {
                        PushNotificationResult resultObject = JsonConvert.DeserializeObject <PushNotificationResult>(result);
                        if (resultObject != null && resultObject.results != null && resultObject.results.Count > 0 && !string.IsNullOrWhiteSpace(resultObject.results[0].error))
                        {
                            if (resultObject.results[0].error.Equals("NotRegistered"))
                            {
                                return(false);
                            }
                        }
                    }
                }

                return(true);
            }
        }
Beispiel #2
0
        //Tópico é como é feito a lógica para enviar notificações para o aplicativo, o usuário se inscreve em um tópico através do aplicativo e o firebase encaminha a notificação para todo mundo que está inscrito nesse mesmo tópico.
        public PushNotificationResult SendNotification(string _title, string _message, string _topic)
        {
            PushNotificationResult result = new PushNotificationResult();

            try
            {
                result.Sucesss = true;
                result.Error   = null;
                var requestUri = "https://fcm.googleapis.com/fcm/send";

                WebRequest webRequest = WebRequest.Create(requestUri);
                webRequest.Method = "POST";
                webRequest.Headers.Add(string.Format("Authorization: key={0}", "AAAA9WtlbSc:APA91bGauhKbdNozyR3eE_R20L5OuwlGOgQQmqQxcCf_qJMRd-BAFB6MpOvgyc-p4O4tatavsXLl47NqECpnq1VcD24FUGMNkWn_tyvC36e3ErNpc5drUfQ70E9uMQwIdKE_0SaFaCpl"));
                webRequest.Headers.Add(string.Format("Sender: id={0}", "1054068796711"));
                webRequest.ContentType = "application/json";

                var data = new
                {
                    // to = YOUR_FCM_DEVICE_ID, // Uncoment this if you want to test for single device
                    to           = "/topics/" + _topic, // this is for topic
                    notification = new
                    {
                        title = _title,
                        body  = _message
                                //icon="myicon"
                    }
                };
                var serializer = new JavaScriptSerializer();
                var json       = serializer.Serialize(data);

                Byte[] byteArray = Encoding.UTF8.GetBytes(json);

                webRequest.ContentLength = byteArray.Length;
                using (Stream dataStream = webRequest.GetRequestStream())
                {
                    dataStream.Write(byteArray, 0, byteArray.Length);

                    using (WebResponse webResponse = webRequest.GetResponse())
                    {
                        using (Stream dataStreamResponse = webResponse.GetResponseStream())
                        {
                            using (StreamReader tReader = new StreamReader(dataStreamResponse))
                            {
                                String sResponseFromServer = tReader.ReadToEnd();
                                result.Details = sResponseFromServer;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                result.Sucesss = false;
                result.Details = null;
                result.Error   = ex;
            }

            return(result);
        }
        private IMobilePushNotificationServiceClient CreateMobileServiceClient()
        {
            IMobilePushNotificationServiceClient client = Substitute.For <IMobilePushNotificationServiceClient>();

            client
            .SendNotification(Arg.Any <MobileDevice>(), Arg.Any <PushNotification>())
            .Returns(PushNotificationResult.Success(Constants.PushNotificationEndPoint));

            return(client);
        }
 private void PushNotificationShouldFailAtEndPoint(IMobilePushNotificationServiceClient client)
 {
     client
     .SendNotification(Arg.Any <MobileDevice>(), Arg.Any <PushNotification>())
     .Returns(PushNotificationResult.Failed(Constants.PushNotificationEndPoint, "Invalid notification."));
 }