Kayıt Ol

Giriş

Şifremi Kaybettim

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Giriş

Kayıt Ol

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi adipiscing gravdio, sit amet suscipit risus ultrices eu. Fusce viverra neque at purus laoreet consequa. Vivamus vulputate posuere nisl quis consequat.

Android OneSignal ile Push Notification Gönderimi

Merhaba arkadaşlar,Android uygulama geliştirme dersleri anlattığımız mobilhanem.com sitemiz üzerinden bugün Android Push Notification göndermenin kolay yolu olan OneSignal Push Notification Servisi ile Push göndermeyi anlatacağım. Bildiğiniz üzere Parse şirketi, Parse SDK ile bildirim gönderme desteğini artık çekeceğini ve bu platformun kullanılmayacağını bildirdi. Parse SDK gibi hızlı ve ekstra bir sunucu oluşturmadan online olarak bildirim atabilmek için OneSignal servisini inceledik.

OneSignal çoklu platformlara bildirim desteği sağlar , uygulamarımızda kullanabilmemiz için ( Android, IOS, Amazon, Windows Phone, Unity 3D, Phonegap vb. ) gibi bir çok platforma desteği vardır. Android uygulamalarımıza bildirim gönderimini nasıl yaparız gelin inceleyelim:

İlk olarak GCM Api Key almamız gerekiyor Google Server API Key nasıl alınır bir çoğumuz bunu GCM ile Push Notification Gönderimi dersimizden biliyoruz.

1-) Google Cloud üyeliğini gerçekleştiriyoruz , eğer üye isek direk ilgili sayfaya yönleneceksiniz.

2-) Create Project segmesine tıklıyoruz ve karşımıza gelen kısımda proje ismini belirleyip Create diyoruz. ( Ben gördüğünüz gibi proje ismini OneSignalExample olarak belirledim. )

create_project

3-) Projemizi yarattıktan sonra Project Number kısmını göreceksiniz onu saklayın çünkü  android uygulamamızı yaratırken kullanacağız.

project_number

4-) Enable and manage APIs segmesine tıklıyoruz.

enable_google_api

5-) Google Cloud Messaging API‘sini Enable ediyoruz.

gcm_enable

6-) Google Cloed Messaging API’sini enable ettikten sonra karşımıza çıkan bölümde Go to Credentials butonuna tıklıyoruz. Eğer aşağıdaki kısım çıkmazsa Dashboard’un sol tarafından bu bölüme ulaşabiliriz.

credentials

7-) Create New Key segmesine tıklıyoruz ve karşımıza gelen ekranda Server key seçeneğini seçiyoruz.

create_new_key

8 -) Karşımıza gelen ekranda direkt olara Create segmesine tıklıyoruz.

key_create

9-) Sonunda API Key değerimiz oluşturuldu bunuda android uygulamamızda kullanacağımız için saklıyoruz.

10-) OneSignal sitesine giriyoruz.

11-) OneSignal’e login olabilmek için kayıt olmamız gerekiyor , eğer kayıt olmadıysak gerekli işlemleri tamamlayıp siteye kayıt oluyoruz.

12-) Kayıt işleminden sonra OneSignal sitesine tekrardan girip projemizi yaratıyoruz. Google Android segmesini active hale getirip , Configure seçeneğini seçiyoruz.

platforms_onesignal

13-) Yukarıda anlatmış olduğum ve elde etttiğimiz Google API Key değerimizi ilgili yere yapıştırıyoruz, Save butonuna basıyoruz.

editgcm

14-) Daha sonra Select SDK segmesinden Native Android seçeneğini seçiyoruz.

select_sdk

15-) Install SDK seçeneğinde ise OneSignal’in app id si yaratılmış olacak bunuda android uygulamamızda kullanacağız , burdaki işlemleri başarı ile bitirebilmek için şimdi Android Studio‘ da bir takım kodlamalar yapmamız gerekmektedir.

16-) Aşağıda yer alan aşamaları sırasıyla yaptıktan sonra bu aşamada Test Settings kısmında uygulamamıza isterseniz deneme olarak bildirim gönderebilirsiniz ve kayıtlı olan cihaz sayısını yine bu kısımdan görebilirsiniz. ( not: Bildirim gelmesi için cihazın sisteme kayıtlı olması gerekmektedir! bu yüzden anlatılanları adım adım uygulayınız. )

1-) İlk olarak build.gradle kısmını açıyoruz ve dependencies kısmına aşağıdaki kodları yapıştırıyoruz.

2-) Yukarıda elde etmiş olduğumuz OneSignal app id ve Google Project Number değerlerini ilgili yerlere yazıyoruz. ( build.gradle içinde )

3-) Application sınıfı yaratıyoruz ve aşağıdaki kod yapısını kullanıyoruz.

4-) En son olarak android uygulamamızı gerçek cihazda run ediyoruz. Böylece cihazımızın kaydını OneSignal platformunda oluşturduk. Şimdi yukarıda yer alan 16′ncı maddeye geri dönüp bildirim işlemlerini tamamlayabilirsiniz.

Deneme amaçlı olarak uygulamamıza bildirim göndermek için OneSignal sitesinden başlık ve mesaj içeriğini doldurduktan sonra bildirimimizi gönderdik

msg_screen

Cihazımıza gelen bildiriminde ekran görüntüsü aşağıdadır:

push_example

Evet arkadaşlar bildirim işlemini tamamladık biraz uzun bir yazı oldu ama sıfırdan bildirim işlemlerini oluşturmak isteyenler için yararlı olacaktır. Aşağıda kaynak kod mevcuttur isterseniz kaynak kodu indirip kendi Google Project Number’ınızı ve OneSignal App Id‘inizi yazarak kullanabilirsiniz. OneSignal sitesini incelemenizi tavsiye ederim bildirim konusunda daha detaylı dokumanlar bulabilirsiniz. ( bildirim iconu değiştirme, kişiye özel bildirim gönderme vb. )

Ders hakkında soru ve önerilerinizi çekinmeden yorum bırakabilirsiniz. Bol Android’li günler sizin olsun, bir dahaki dersime görüşmek üzere 🙂

 

Yazar Hakkında

Yüksek Lisans: Çankaya Üniversitesi / Bilgisayar Mühendisliği Lisans: Çankaya Üniversitesi / Bilgisayar Mühendisliği (4/3.30) (2010-2014) Lisans : Viyana Teknik Üniversitesi / Bilgisayar Bilimleri (2013)
  • Emre Tekin

    Bütün adımları dikkatlice uyguladım 16. Adımda Next Butonu hala aktif değil “Check Subscribed Users” butonuna tıkladığımda

    “We haven’t detected any subscribed users yet for this platform. Try some of the tips below, or contact us for support.”

    Hatası alıyorum.

    Build gradle’ı kontrol ettim bir problem yok. Project Number ve OneSignal ID’yi kontrol ettim ikiside doğru.

    Application Class’ını dediğiniz gibi denedim olmadı, OneSignal’ın kendi documentation’ına göre denedim orada da OnCreate’ın altına Sadece “OneSignal.startInit(this).init();” bu kodu eklememiz söylenmiş bunuda denedim yani çalışmadı. OneSignal.com 16.Seçenekte Cihazımı görmüyor ne yapabilirim ?

    • Alper Beyler

      Merhaba , 16ncı adıma gelmeden önce android projenizde yapmanız gereken; yukarıda anlattığım kodları ekledikten sonra activity’inizin onCreate methoduna aşağıdaki kodları ekleyip run etmek böylece cihazınız subscribe işlemini tamamlayacaktır.

      OneSignal.setLogLevel(OneSignal.LOG_LEVEL.DEBUG, OneSignal.LOG_LEVEL.DEBUG);
      OneSignal.startInit(this).init();

  • kaan

    ben kaynak dosyalarını indirdim kendi api kodumu ekledim ama bu dosyalarda websitesi yerini bulamadım. Acaba yardımcı olabilir misiniz? Kendi sitemi nasıl ekleyeceğim.

    • kaan

      ek olarak baktım da webview ile ilgili birşey de bulamadım kaynak dosyalarında.

      • Alper Beyler

        webview ile ilgili bi ders olduğunu söylemedim zaten sadece bildirimin nasıl oluşturulacağını ve cihaza bildirimin nasıl geleceğini anlattım

        • kaan

          peki webview ile yapılmış örnek bir proje yok mu, kendim yapmaya çalıştığımda hata alıyorum.

        • kaan

          ve onesignal mi kullansak daha faydalı yoksa direk php mysql olarak kullansak mı daha iyi olur.

          • Alper Beyler

            bu projenizin ne olduğuna bağlı , kolaylık istiyorsan ve bildirimleri manuel olarak gireceksen one signal kullanabilirsin ( bildirim gönderme kotası, kendin direkt olarak sunucuya etki edememen vb. dezavantajları da var ) ama complex projelerde kendi php kodlarını ve sunucunu oluşturarak bildirim gönderebilirsin , onun içinde bu dersimizi incele https://www.mobilhanem.com/android-google-cloud-messaging-ile-push-notification-gonderimi-php-mysql/

          • kaan

            benim aslında yapmak istediğim facebook whatsapp da olan bildirim sistemi. Misal sitede kullanıcıya bir mesaj geldiğinde bu bildirim olarak gözüküyor, aynı şekilde bildirimin telefona da gitmesini istiyorum ama sanırım onesignal bu mümkün değil. Teşekkür ederim.

          • O zaman php server’ını kendin kuracaksın. Sitede dersi mevcut.

          • kaan

            hocam dersi gördüm, yani dediğim şey yapılabilir değil mi? Facebook gibi misal. Eğer olmayacak birşeyse uğraşmakta istemiyorum.

        • Kerem

          sizin dosyaları import ettim ancak one signal de install sdk kısmı bir türlü geçmiyor Check Subscribed Users kısmı bir türlü geçmiyor

  • Kerem

    Sürekli Hata Alıyorum Bir video Şeklinde Yüklemeniz mümkün mü acaba

    • Videolu ders yayınlamıyoruz. Kaynak kod yayınlayarak ilerliyoruz.
      Kolay gelsin.

    • Alper Beyler

      nerede hata alıyorsunuz yazarsanız çözmeye çalışalım ?

      • Kerem

        sizin dosyaları import ettim ancak one signal de install sdk kısmı bir türlü geçmiyor Check Subscribed Users kısmı bir türlü geçmiyor nerede hata yapıyorum

        • Alper Beyler

          dersteki anlatımda dediğim gibi adımları tek tek takip ettiysen daha sonrasında ilgili projende aşağıdaki kodları onCreate methodunun içine koy ve uygulamayı run et ( sıfırdan kendin oluşturabilirsin dersteki adımları takip ederek ve kendi app id ve project number’ını manifest de tanımlamayı unutma )

          OneSignal.setLogLevel(OneSignal.LOG_LEVEL.DEBUG, OneSignal.LOG_LEVEL.DEBUG);

          OneSignal.startInit(this).init();

  • Kerim Can

    Sizin Kaynak Kodu İndirdim gereken kodları ekledim one signal app id vs ancak install sdk kısmını bir türlü geçemiyorum nerede hata yapıyorum acaba

  • Paylas66

    Hocam B bildirimi entegre ettim Fakat Onesignal panelinden bildirime URL girebiliyoruz. Bildirii gönderip telefondan gelen bildirime tıkladığımızda URL yi dış tarayıcıda açıyor. Bunu uygulamanın içinde açtırabilir miyiz acaba? aradım ama bulamadım bi türlü.. Yardımcı olursanız çok sevinirim.

    • Alper Beyler

      Merhaba öncelikle buradaki işlemleri uygulayıp bildirim alma işlemini başarı ile tamamladınız mı ? url açtırma konusuna gelince denemdim one signal ile inceleyip en kısa zamanda buradan dönüş yaparım , kolay gelsin

      • Paylas66

        Hocam bildirim alma işleminde sıkıntı yok. Emeğinize sağlık. Gayet başarılı şeklide bildirim alıyorum. Fakat biraz paneli kurcaladım. dökümanlara baktım. işin içinden çıkmadım. sabırsızlıkla bekliyorum hocam. Kolay gelsin.

  • hakkıcan

    elinize sağlık gerçekten faydalı bir anlatım olmuş

    • Alper Beyler

      Teşekkürler, elimizden geldiği sürece yardımcı olmaya çalışıyoruz..

  • Can Bahadır Ceylan

    Peki android uygulaması içinden push mesaj gönderimi nasıl oluyor?

    Ben şöyle birşey buldum;

    try {
    String strJsonBody = “{”
    + “”app_id”: “c880620a-6563-459b-b7b2-d1e0d7eb19b2″,”
    + “”included_segments”: [“All”],”
    + “”headings”: {“en”: “Baslik”},”
    + “”contents”: {“en”: “English Message”}”
    + “}”;

    OneSignal.postNotification(new JSONObject(strJsonBody), null);
    } catch (JSONException e) {
    e.printStackTrace();
    }

    Fakat included_segments ile herkese push yollamaya çalışınca “Segment or tag targeting requires a valid App REST API key.” şeklinde bir hata alıyorum.. Yardımcı olabilir misiniz?

  • ganibasabak@hotmail.com

    Merhabalar Test Setting Bölümdeyim

    We couldn’t send a test notification using your configured platform settings.

    Android Platform Errors: (Invalid Google Credentials) Google
    returned a 401 Unauthorized error. Your Google Server API Key is entered
    incorrectly, not enabled for Google Cloud Messaging, or
    access-restricted by IP.

    -Hatası alıyorum ve bildirim cihazıma gelmiyor neden acaba ?

    Şimdiden teşekkürler.

    • Alper Beyler

      merhabalar, hata mesajına bakarsanız Google Server API Key yanlış girilmiş bu yüzden de google cloud messaging aktif hale gelmemiş yada ip adresiniz de bir kısıtlamadan dolayı bu hatayı alıyorsunuz. api keyinizin doğru bir şekilde girilip girilmediğini kontrol edermisiniz dersimde de ayrıntılı bir şekilde anlattım.

  • onesignal’de bir limit varmı

    • Alper Beyler

      herhangi bir limit yok diye biliyorum yinede one signal kendi sitesinden inceleyebilirsiniz

  • enverk

    Ya baskan.. webview uygulamaya calısıyorum yalnız asagıdaki hatayı alıyorum

    Error:Execution failed for task ‘:app:processDebugResources’.
    > Error: more than one library with package name ‘com.google.android.gms’

  • enverk

    ya baskan lütfen sunu webview için uygulayıp bi döküman paylasırmısın rica etsem..

    • Alper Beyler

      bu dersteki kaynak kodu indirip ilgili activity de webview kullanacaksın ayrıca bir çalışmaya gerek yok

      • enverk

        olmuyor işte baskan bi tane uygulamalı anlatsan ne olur ya…

        • Alper Beyler

          neresinde takılıyorsun tam olarak söyle yardımcı olmaya çalışalım ? webview eklendi mi ilgili activity e daha sonra yukarıdaki işlemleri yaptın mı ?

  • Mehmet

    OneSignale giriş yaptığımda; Google Android platformu gönderilen yeni iletileri engelleyen bir Geçersiz Google Kimlik yapılandırma hatası vardır. App Ayarlarını kontrol edin. Hata uyarısı var ve Onesignal üzerinden gönderdiğim bildirimler gitmiyor. Bilgisi olan veya böyle uyarı ile karşılaşan var mı ?

    • Paylas66

      Hocam galiba google ın yeni platformu Firebase yuzunden oldu bunlar.
      Benim bildirimlerde gitmiyor. GCM sistemiyle gönderdiğim bildirimler şuanda sıkıntılı. One signal ile de bir çok uygulama bildirim gönderemiyor. GCM yi FCM ye yani Firebase bildirim sistemine çevirmemiz gerekiyor sanırım. Tam olarak ne yapılacağını da bilmiyoruz. Bununla ilgili de güzel paylaşımlar yapılırsa çok iyi olur. Yoksa şuan çoğu kişi bu konuda bilgisiz ve mağdur durumda.

  • Mehmet

    Hocam Uygulamama One Signal Push Notification Entegre Ettiğimde ve Uygulamayı Gerçek Cihaza Yükleme Esnasında Resimdeki Hataları Almaktayım. Çözüm İçin Yardımcı Olurmusunuz.

    • Alper Beyler

      Merhabalar, background kısmında sorun var sanırım layoutu kontrol edermisin , buradaki kaynak kodu çalıştırıp denedin mi ?

  • Hayri

    Bir yazıya yönlendirme var mı

    • Alper Beyler

      tam olarak sorunuzu anlamadım kaynak kodu indirip incelediniz mi ?

  • Mehmet

    One Signal Uygulamaya eklediğimde sistem çalışıyor fakat bildirim ikonu çember içerisinde ortada küçük duruyor. bunu çember olmadan sadece uygulama ikonu ve büyük haliyle nasıl yapabiliriz.

  • doganh

    ionic framework ile proje geliştiriyorum onesignal notification ile gönderiyorum fakat telefona iki bildirim geliyor bunu nasıl kapatabilirim.

  • ayşegül göçmen

    Merhabalar onesignal de otomatik bildirim gonderimi nasil oluyor. Yapmak istediğim uygulamayı indiren herkese 1 kereligine otomatik mesaj gitmesini. Yardımcı olur musunuz.

  • Ahmet Kırmızıoğlu

    onCreate method u içerisinde

    OneSignal.startInit(this).init();

    olarak çalıştırılabilir .Diğer türlü activity içerisinde log ve debug gözükmesi hoş değil

    • Alper Beyler

      Tavsiyeniz için teşekkür ederiz, iyi çalışmalar

  • İlker Yasin AKSOY

    Aşamaları başarıyla geçtim. Apk ya çevirdim, kurup açınca sürekli debug mesajları çıkıyor uygulamada. Sebebi ne olabilir acaba?

    • Alper Beyler

      Merhaba kaynak kodları incelersen eğer onCreate methodun da OneSignal.startInit(this).init(); bu kodu çalıştırmalısın ve OneSignal.setLogLevel(OneSignal.LOG_LEVEL.DEBUG, OneSignal.LOG_LEVEL.DEBUG); bu kodu commente al çalıştırma dediğim gibi yaparsan debug kodları gözükmeyecektir.

  • Erdinç Çağlıyan

    hocam bu api ücretlimi, yoksa sadece sms göndermek için mi ücret alıyor.. birde mysql tarafından androide mesaj göndermek için hangi mysql kodu kullanabilirim yardımcı olur musunuz?

  • Kodlamaya Çalışan

    Hocam One Signal Projeye Entegre etik çalıştı da fakat küçük bir sorun var. bildirim cihaza geldiğinde bildirim çubuğunda görünen ikon alarm simgesidir. bunu uygulamanın ikonuna nasıl dönüştürebiliriz. daha önce de bu başıma gelmişti. FCM den önce sdk ile düzelmişti. ama şu anda düzelmiyor. yardımcı olursanız sevinirim.