Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            if (args.Length <= 0)
            {
                return;
            }
            var pushInformation = PushInformation.Load(AppDomain.CurrentDomain.BaseDirectory + "../../../info.xml");              // ASP.NETが保存しているファイルを見ます

            var webPushClient = new WebPushClient();
            var vapidDetails  = new VapidDetails("mailto:[email protected]", pushInformation.VapidPublic, pushInformation.VapipPrivate);
            var targetList    = pushInformation.Targets.ToArray();

            foreach (var target in targetList)
            {
                try
                {
                    var subscription = new PushSubscription(target.EndPoint, target.PublicKey, target.AuthSecret);
                    webPushClient.SendNotification(subscription, @"test application", vapidDetails);
                }
                catch (Exception exp)
                {
                    if (exp.Message == "Subscription no longer valid")                      // 購読者がいなくなるとこんな感じの例外を吐くので送信先から消しておこう
                    {
                        pushInformation.Targets.Remove(target);
                    }
                }
            }
            PushInformation.Save(pushInformation, AppDomain.CurrentDomain.BaseDirectory + "../../../info.xml");
            Console.ReadKey();
        }
Ejemplo n.º 2
0
        public void Post(NotificationTarget target)
        {
            var pushInformation = PushInformation.Load(AppDomain.CurrentDomain.BaseDirectory + "../info.xml");              // 保存先はてきとうに

            if (pushInformation == null)
            {
                return;
            }
            pushInformation.Targets.Remove(pushInformation.Targets.FirstOrDefault(t => t.EndPoint == target.EndPoint));
            pushInformation.Targets.Add(target);
            PushInformation.Save(pushInformation, AppDomain.CurrentDomain.BaseDirectory + "../info.xml");
        }
Ejemplo n.º 3
0
        public ActionResult Index()
        {
            var model           = new HomeModel();
            var pushInformation = PushInformation.Load(AppDomain.CurrentDomain.BaseDirectory + "../info.xml"); // 保存先はてきとうに

            if (pushInformation == null)                                                                       // VAPIDで使用する公開鍵を作成
            {
                pushInformation = new PushInformation();
                var vapidKeys = VapidHelper.GenerateVapidKeys();
                pushInformation.VapidPublic  = vapidKeys.PublicKey;
                pushInformation.VapipPrivate = vapidKeys.PrivateKey;
                PushInformation.Save(pushInformation, AppDomain.CurrentDomain.BaseDirectory + "../info.xml");                    // 作ったら保存しとく
            }
            model.VapidPublic = pushInformation.VapidPublic;
            model.Data        = Request.QueryString.Get("data");
            return(View(model));
        }