Veritabanı & Web Servis

BroadcastReceiver ve RESTful Web Servisi ile Mesajlaşma Uygulaması

Hepimiz günlük hayatımızda arkadaşlarımıza, ailemize, sevdiklerimize mesaj atıyoruz öyle değil mi?Bu olayı,ben de günlük hayatımda çok sık kullanıyorum ve sizin de kullandığınızı tahmin ediyorum. İşte size mesajlaşma servisini keyifli bir hale getirdiğimi düşündüğüm ve keyif alarak oluşturduğum projemden bahsetmek istiyorum.

Şimdi gelin hep birlikte neler yazmışım bir göz atalım ne dersiniz?

Push Notification, BroadcastReceiver, SQLite Veritabanı,Mysql Veritabanı, Php Programlama ve RESTful Web Servisi ile Post ve Get İşlemleri konularını birlikte kullanarak keyifle yazdığım projemin detayları aşağıdaki gibidir.

Projenin İçeriği

Sizlerin hayatını kolaştırmak için oluşturduğum projemden bahsetmeye başlıyorum.
Grup içindeki kullanıcılar,yönetim tarafından verilen şifreler ile uygulamaya giriş yaptıktan sonra, kendi aralarında birbirlerine mesaj göndermesi ve sisteme gelen mesajların ,bu kullanıcılara Push Notification metodlarıyla bildirim olarak gösterilmesidir.Grup içindeki kullanıcılar ,eğer isterlerse, şifreleri ile giriş yaparak, mesajlaşma geçmişlerine bakma imkanlarıda bulunmaktadır.
BroadcastReceiver sayesinde ,uygulama kapalı dahi olsa, gönderilen mesajlar kullanıcıya bildirim ile gösterilmektedir. Projenin örnek resimleri:
passwordlogin_sendMessagebildirimmesajlist

Proje uygulayabilmek için atılması gereken adımlar şu şekildedir:
1- Android cihazda ,SQLite veritabanı oluşturmak
2- Android programlamada Push Notification, BroadcastReceiver ve RESTful Web Servisi ile Post ve Get İşlemlerinin yapılması
3- Sunucu tarafında veritabanı(Mysql) oluşturmak
4- Php programlama dili ile mysql ile veritabanına bağlanarak,mesajların girilmesi ve mesajların çekilmesi

İlk olarak olarak, Android arayüzleri için xml kodlarımızı hazırlayalım.

Kullanıcı giriş için şifre formu bulunan activity_main.xml kodları :

Mesajın girilmesi için oluşturulan activity_send_message.xml kodları

Mesajların listelenmesi için kullanılacak activity_message_list.xml kodları  ve mesaj gönder başlığının görüntülenmesi için yazılacak xml; header_gradient.xml e Github linkinden ulaşabilirsiniz.

Kullanıcıların şifreleri ile sisteme giriş yapmaları için , gerekli kontrollerin yazıldığı MainActivity sınıfının kodları:

Kullanıcının uygulamayı her açtığında ,şifreyi girerek kullanıcı girişini sağlamaması için,kullanıcıyı Android cihazın veritabanına kaydettim.Bu veritabanı işlemleriyle ilgili yaptığım tüm işlemlerin metotları Veritabani sınıfında bulunmaktadır.Veritabani.java kodları:

Mesaj formundan alınan değerleri, RESTful Web Servisi ile sunucuya gönderdiğimiz ve NotificationReceiver sınıfımızı,10 saniyede bir tekrar ederek çalışmasını sağlayan SendMessage sınıf kodları :

MyMethod sınıfında stripXSS metodu ile Xss ataklarını önlemek için, metoda gönderilen verileri güvenlik açığı yaratacak karakterlerden temizleme kodu kullandım.

HttpClientMy sınıfında , RESTful Web Servisi kullanarak sunucuya mesaj gönderimi ve sunucudan mesaj çekme metodları bulunmaktadır

NotificationReceiver sınıfında , sunucudan mesajları çekme , Push Notification ile bildirim yapma ve gelen bildirim mesajının tekrar tekrar gösterilmemesi için mesaj_id değerinin sunucuya iletilmesi için kodlar bulunmaktadır.

MessageList sınıfında şifresi doğru olan kullanıcıların,kendi aralarında gönderdikleri tüm mesajları ListView ile listeledim.

Son olarak Android programlama tarafında , AndroidManifest.xml dosyasında ilgili izin ve tanımlamaları yaptım. Bu ayara Github linkinden ulaşabilirsiniz

Sunucu taraflı kodlar ve işlemler;

Sunucu veritabanındaki(mysql) tabloların oluşturulması

kullanici_sifre ve mesaj veritabanı tablolarının aşağıdaki resimde gösterildiği gibi oluşturulması yapılmalıdır.mesaj_tablosusifre_tablosu

Php programlama dilini kullanarak yazılmış, sunucu taraflı kodlar:

passwordControl.php;kullanıcı giriş formundan gelen şifrenin doğru olup olmadığını true/false şeklinde döndüren php-mysql kodları:

insertMessage.php; mesaj girme formundan gelen değerlerin, veritabanına kayıt edilmesi yapılmaktadır.

getMessage.php; mysql ile kullanici_sifresi ve mesaj tablosunu birleştirerek, sadece kullanici_sifresi tablosunda şifresi bulunan kullanıcıların mesajlarını select sorgusuyla çekip, json_encode fonksiyonuyla jsonString hale getirdim.Böylelikle kullanici_sifresi tablosunda belirlediğiniz şifrelerle mesaj gönderen insanlar sadece mesaj gönderebilecek.Eğer şifreyi doğru girmediyse, mesajı bildirim ile gönderilmemesini sağlamış oldum.Bir nevi grup içinde, mesajlaşma sistemi yapmış oldum.

Mesajları kayıt yaparken mesaj tablosundaki her bir mesaj kaydının flag sütunundaki değerini 0 yapmıştım. getMessage.php de de flag değeri 0 ise kayıdı çek diye bir koşul yapmıştım.

updateFlagRow.php ise veritabanında mesaj tablosundaki , flag sütununun değeri 1 diye update ederek, gönderilmiş mesajın ,tekrar tekrar gönderilmemesi için bir tür önlem alıyorum.

getAllMessage.php; kullanici_sifresi tablosunda şifre ile kayıt olunmuş mesajların tamamını veritabanından çekip, json_encode fonksiyonuyla jsonString hale getiren kod:

İşte hepimizin günlük hayatında çokça kullandığı mesajlaşma servisiyle ilgili oluşturduğum projemin detayları yukarıda anlattığım şekildedir. Umarım yazımı keyif alarak okumuşsunuzdur. Yazımı okumak için vakit ayırdığınız için çok teşekkür ederim. Daha birçok keyifli proje ve yazılar ile beraber olacağız.
Bir başka yazımda eğlenceli bir şekilde buluşmak ümidi ile…

Son olarak ufak bir not: Bu yukarıda anlattığım projemin kodlarını indirmek isterseniz; yapmanız gereken tek şey Github linkine tıklamak.

Hayatınızın daha da kolaylaşması dileğiyle…

Bülten
Bültene abone ol

Bültene abone olarak yeni makalelerimden haberdar olun.

9 Yorumlar

tugbaust için bir cevap yazın Cevabı iptal et

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