示例#1
0
        public void NotifyAndroidUserUsers(List <string> deviceIds, string message, NotificationType type)
        {
            //Fluent construction of an Android GCM Notification
            //IMPORTANT: For Android you MUST use your own RegistrationId here that gets generated within your Android app itself!
            var noti = new GcmNotification();

            noti.RegistrationIds = deviceIds;
            _pushBroker.QueueNotification(noti.WithJson("{\"alert\":\"" + message + "\",\"badge\":6, \"type\":\"" + type.ToString() + "\"}"));
        }
示例#2
0
        public void SendInvite(List <string> registrationIds, PushNotification notificationData)
        {
            GcmNotification notification = new GcmNotification();

            notification.ForDeviceRegistrationId(registrationIds);

            notification.WithJson(Serializer.SerializeToJason <PushNotification>(notificationData));

            this.PushNotification(notification);
        }
示例#3
0
        //Android push message to GCM server method
        #region IPushNotifier Implemented methods

        public void Invite(Event evnt, List <UserProfile> users)
        {
            List <string> registrationIds = new List <string>();

            users.ForEach(user =>
            {
                registrationIds.Add(user.GCMClientId);
            });
            GcmNotification notification = new GcmNotification();

            notification.ForDeviceRegistrationId(registrationIds);
            PushNotification notificationData = new PushNotification()
            {
                Type      = "EventInvite",
                EventId   = evnt.EventId.ToString(),
                EventName = evnt.Description
            };

            notification.WithJson(Serializer.SerializeToJason <PushNotification>(notificationData));

            this.PushNotification(notification);
        }
示例#4
0
        public void TestNotifications(bool shouldBatch, int toQueue, int expectSuccessful, int expectFailed, int[] indexesToFail = null, bool waitForScaling = false)
        {
            testPort++;

            int msgIdOn = 1000;

            int pushFailCount    = 0;
            int pushSuccessCount = 0;

            int serverReceivedCount        = 0;
            int serverReceivedFailCount    = 0;
            int serverReceivedSuccessCount = 0;

            //var notification = new GcmNotification();

            var server = new TestServers.GcmTestServer();

            server.MessageResponseFilters.Add(new GcmMessageResponseFilter()
            {
                IsMatch = (request, s) => {
                    return(s.Equals("FAIL", StringComparison.InvariantCultureIgnoreCase));
                },
                Status = new GcmMessageResult()
                {
                    ResponseStatus = GcmMessageTransportResponseStatus.InvalidRegistration,
                    MessageId      = "1:" + msgIdOn++
                }
            });

            server.MessageResponseFilters.Add(new GcmMessageResponseFilter()
            {
                IsMatch = (request, s) => {
                    return(s.Equals("NOTREGISTERED", StringComparison.InvariantCultureIgnoreCase));
                },
                Status = new GcmMessageResult()
                {
                    ResponseStatus = GcmMessageTransportResponseStatus.NotRegistered,
                    MessageId      = "1:" + msgIdOn++
                }
            });
            //var waitServerFinished = new ManualResetEvent(false);

            server.Start(testPort, response =>
            {
                serverReceivedCount        += (int)response.NumberOfCanonicalIds;
                serverReceivedSuccessCount += (int)response.NumberOfSuccesses;
                serverReceivedFailCount    += (int)response.NumberOfFailures;
            });



            var settings = new GcmPushChannelSettings("SENDERAUTHTOKEN");

            settings.OverrideUrl("http://*****:*****@"{""key"":""value1""}";

            if (shouldBatch)
            {
                var regIds = new List <string>();

                for (int i = 0; i < toQueue; i++)
                {
                    regIds.Add((indexesToFail != null && indexesToFail.Contains(i)) ? "FAIL" : "SUCCESS");
                }

                var n = new GcmNotification();
                n.RegistrationIds.AddRange(regIds);
                n.WithJson(json);

                push.QueueNotification(n);
            }
            else
            {
                for (int i = 0; i < toQueue; i++)
                {
                    push.QueueNotification(new GcmNotification()
                                           .ForDeviceRegistrationId((indexesToFail != null && indexesToFail.Contains(i)) ? "FAIL" : "SUCCESS")
                                           .WithJson(json));
                }
            }



            Console.WriteLine("Avg Queue Wait Time: " + push.AverageQueueWaitTime + " ms");
            Console.WriteLine("Avg Send Time: " + push.AverageSendTime + " ms");

            if (waitForScaling)
            {
                while (push.QueueLength > 0)
                {
                    Thread.Sleep(500);
                }

                Console.WriteLine("Sleeping 3 minutes for autoscaling...");
                Thread.Sleep(TimeSpan.FromMinutes(3));

                Console.WriteLine("Channel Count: " + push.ChannelCount);
                Assert.IsTrue(push.ChannelCount <= 1);
            }

            push.Stop();
            push.Dispose();

            server.Dispose();
            //waitServerFinished.WaitOne();

            Console.WriteLine("TEST-> DISPOSE.");

            Assert.AreEqual(toQueue, serverReceivedCount, "Server - Received Count");
            Assert.AreEqual(expectFailed, serverReceivedFailCount, "Server - Failed Count");
            Assert.AreEqual(expectSuccessful, serverReceivedSuccessCount, "Server - Success Count");

            Assert.AreEqual(expectFailed, pushFailCount, "Client - Failed Count");
            Assert.AreEqual(expectSuccessful, pushSuccessCount, "Client - Success Count");
        }
示例#5
0
        public void TestNotifications(bool shouldBatch, int toQueue, int expectSuccessful, int expectFailed, int[] indexesToFail = null)
        {
            testPort++;

            int msgIdOn = 1000;

            int pushFailCount    = 0;
            int pushSuccessCount = 0;

            int serverReceivedCount        = 0;
            int serverReceivedFailCount    = 0;
            int serverReceivedSuccessCount = 0;

            //var notification = new GcmNotification();

            var server = new TestServers.GcmTestServer();

            server.MessageResponseFilters.Add(new GcmMessageResponseFilter()
            {
                IsMatch = (request, s) => {
                    return(s.Equals("FAIL", StringComparison.InvariantCultureIgnoreCase));
                },
                Status = new GcmMessageResult()
                {
                    ResponseStatus = GcmMessageTransportResponseStatus.InvalidRegistration,
                    MessageId      = "1:" + msgIdOn++
                }
            });

            server.MessageResponseFilters.Add(new GcmMessageResponseFilter()
            {
                IsMatch = (request, s) => {
                    return(s.Equals("NOTREGISTERED", StringComparison.InvariantCultureIgnoreCase));
                },
                Status = new GcmMessageResult()
                {
                    ResponseStatus = GcmMessageTransportResponseStatus.NotRegistered,
                    MessageId      = "1:" + msgIdOn++
                }
            });
            //var waitServerFinished = new ManualResetEvent(false);

            server.Start(testPort, response =>
            {
                serverReceivedCount        += (int)response.NumberOfCanonicalIds;
                serverReceivedSuccessCount += (int)response.NumberOfSuccesses;
                serverReceivedFailCount    += (int)response.NumberOfFailures;
            });



            var settings = new GcmPushChannelSettings("SENDERAUTHTOKEN");

            settings.OverrideUrl("http://*****:*****@"{""key"":""value1""}";

            if (shouldBatch)
            {
                var regIds = new List <string>();

                for (int i = 0; i < toQueue; i++)
                {
                    regIds.Add((indexesToFail != null && indexesToFail.Contains(i)) ? "FAIL" : "SUCCESS");
                }

                var n = new GcmNotification();
                n.RegistrationIds.AddRange(regIds);
                n.WithJson(json);

                push.QueueNotification(n);
            }
            else
            {
                for (int i = 0; i < toQueue; i++)
                {
                    push.QueueNotification(new GcmNotification()
                                           .ForDeviceRegistrationId((indexesToFail != null && indexesToFail.Contains(i)) ? "FAIL" : "SUCCESS")
                                           .WithJson(json));
                }
            }

            push.Stop();
            push.Dispose();

            server.Dispose();
            //waitServerFinished.WaitOne();

            Console.WriteLine("TEST-> DISPOSE.");

            Assert.AreEqual(toQueue, serverReceivedCount, "Server - Received Count");
            Assert.AreEqual(expectFailed, serverReceivedFailCount, "Server - Failed Count");
            Assert.AreEqual(expectSuccessful, serverReceivedSuccessCount, "Server - Success Count");

            Assert.AreEqual(expectFailed, pushFailCount, "Client - Failed Count");
            Assert.AreEqual(expectSuccessful, pushSuccessCount, "Client - Success Count");
        }