Android ve ASP.NET ile Proje Geliştirmek Bölüm 5 – SON

Merhaba arkadaşlar.

Bu bölümde MVC API projesinde OneSignal kodlarımızı yazacağız. API projemizi açarak kodlarımızı yazmaya devam edelim.

Projemize Services isimli bir klasör oluşturalım ve içerisine OneSignalSender.cs adında bir class açalım.

OneSignalSender.cs
OneSignalSender.cs

OneSignalSender classımıza NotifySend adında bir void metod oluşturalım ve içerisine random veritabanımızdan ingilizce kelime çeken metodumuzu yazalım. Sonrasında çektiğimiz kelime ile OneSignalClient ile bildirim oluşturalım.

 public void NotifySend()
{
            Random rand = new Random();
            DailyEnglishDBEntities entity = new DailyEnglishDBEntities();

            int toSkip = rand.Next(0, entity.Words.Count());

            //Random kelime çekiyoruz.
            var word = entity.Words.Where(x => x.IsUsed == false).OrderBy(x => x.Name).Skip(toSkip).Take(1).First();

            
            var client = new OneSignalClient("ONESIGNAL_CLIENT_ID");

            //Bildirim oluşturuyoruz.
            var options = new NotificationCreateOptions();

            //OneSignal üzerinde oluşturduğumuz Application IDSİ
            options.AppId = Guid.Parse("APP_ID");
            options.IncludedSegments = new List<string> { "All" }; // Tüm kayıtlı cihazlara bildirim gidecek.
            options.Contents.Add(LanguageCodes.English, word.Name); // Veritabanından çektiğimiz kelimeyi gönderiyoruz.
            options.Data = new Dictionary<string, string>();
            options.Data.Add("word", word.Name); // Key-Value olarak kelimemizi ekliyoruz. İsterseniz "word" kısmını kendinize göre düzenleyebilirsiniz
            client.Notifications.Create(options);
}

Bu kodlardan sonra Startup.cs dosyamızı açarak günlük-saatlik yada dakikalık gibi seçeneklerle bildirim yollayacağımız kodu yazacağız.

            //Classımızdan instance alıyoruz.
            OneSignalSender sender = new OneSignalSender();

            //Hangfire içerisine NotifySend metodumuzu çağırıyoruz. 
            //İkinci parametremiz ise hangi zaman aralıkları ile atılacağıdır. Şuan günlük olarak ayarlı.
            RecurringJob.AddOrUpdate(() => sender.NotifySend(), Cron.Daily());

            //Her dakika başına bildirim atan metodumuz
            RecurringJob.AddOrUpdate(() => sender.NotifySend(), Cron.Minutely());

            //Her saat başına bildirim atan metodumuz
            RecurringJob.AddOrUpdate(() => sender.NotifySend(), Cron.Hourly());

Yukarıdaki kodlarımızı yazdıktan sonra Startup.cs dosyamızın son hali aşağıdaki gibi olacaktır.

Startup.cs Kodlarımız
Startup.cs Kodlarımız

API projemizi F5 ile çalıştıralım ayrıca android studiomuzu da açarak emulatörü çalıştıralım. API projemizde localhost/hangfire yaparak hangfire dashboardına giriş yapabiliriz.

Hangfire Dashboard
Hangfire Dashboard

Android uygulamamızın çalıştığını gösteren gif;


Yeni sekmede aç

Bu uygulamamızın sonuna geldik arkadaşlar. Bir sonraki yazılarımda görüşmek üzere.

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>