"Düşünmeden öğrenmek, vakit kaybetmektir."

 
Konuyu Oyla:
  • Toplam: 1 Oy - Ortalama: 4
  • 1
  • 2
  • 3
  • 4
  • 5
Firebase Cloud Messaging [FCM] (Resimli Anlatım)
(Okunma: 3151)
19-06-2016, Saat: 18:07
#1
FCM, GCM nin yeni versiyonudur ve buluta bağlı çevrim içi bildirim göndermek için kullanılır, daha sonra belki çevrim dışı olarak uygulama içindeki eylemler ile o cihaza özel bildirim oluşturmanın anlatımını da yapabilirim.

FCM Console Adresinden 'CREATE NEW PROJECT' yapıp;

Şeklinde yapıyoruz, fakat Türkçe karakter kullanmıyoruz;
goO68O.png

Açılan yerde 'Add Firebase to Your Android App' yazan yere tıklıyoruz;
EJPDrg.png

'Package name' yazan yere uygulamamızın paket adını yazıyoruz;
5VDyal.png

'ADD APP' yazan yere tıklayınca 'google-service.json' dosyası inecektir, ardından 'Skip to the console' a tıklıyoruz;
L3bDRz.png

Ardından Uygulamamızı oluşturuyoruz.

Yoksa Android Studio yu indiriyoruz bu linkten;
Android Studio

Yeni bir proje oluşturuyoruz ardından projenin ana dizinindeki app dizinine inen 'google-service.json' adlı dosyayı atıyoruz. (Var olan bir proje üzerinde de yapılabilir tüm bu adımlar.)

Projenin ana dizinindeki build.gradle dosyasında gerekli yere gösterdiğim satırı ekliyoruz;
Kod:
buildscript {
   repositories {
       jcenter()
   }
   dependencies {
       classpath 'com.android.tools.build:gradle:2.1.0'
       //Yalnızca altdaki satırı ekle.
       classpath 'com.google.gms:google-services:3.0.0'
   }
}

app dizinindeki build.gradle dosyasının en altına da bu kodu ekliyoruz;
Kod:
apply plugin: 'com.google.gms.google-services'


Yine app dizinindeki build.gradle dosyasında gerekli yere gösterdiğim kodu ekliyoruz;
Kod:
dependencies {
   compile fileTree(dir: 'libs', include: ['*.jar'])
   testCompile 'junit:junit:4.12'
   compile 'com.android.support:appcompat-v7:23.4.0'
   compile 'com.android.support:design:23.4.0'
   //yalnızca altdaki satırı ekle.
   compile 'com.google.firebase:firebase-messaging:9.0.0'
}


Daha sonra yeni 'IDServisi' adında yeni bir sınıf oluşturup package name satırından sonrasına bunları ekliyoruz;
Kod:
import com.google.firebase.iid.*;

public class IDServisi extends FirebaseInstanceIdService {

   public void onTokenRefresh(){
       String refreshedToken = FirebaseInstanceId.getInstance().getToken();
       sendRegistrationToServer(refreshedToken);
   }

   private void sendRegistrationToServer(String token) {
   }
}

Ardından 'MesajServisi' adında bir sınıf oluşturup package name satırından sonrasına bunları ekliyoruz;
Kod:
import android.app.*;
import android.content.*;
import android.media.*;
import android.net.*;
import android.support.v4.app.*;
import com.google.firebase.messaging.*;

public class MesajServisi extends FirebaseMessagingService{

   public void onMessageReceived(RemoteMessage remoteMessage){
       sendNotification(remoteMessage.getNotification().getBody());
   }

   private void sendNotification(String messageBody){
       Intent intent = new Intent(this, MainActivity.class);
       intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
       PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);

       Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
       NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
               .setSmallIcon(R.mipmap.ic_launcher)
               .setContentText(messageBody)
               .setSound(defaultSoundUri)
               .setContentIntent(pendingIntent);

       NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
       notificationManager.notify(0, notificationBuilder.build());
   }
}

En son bu sınıfları 'AndroidManifest.xml' dosyasının en altına bu kodları ekleyip servis olarak tanımlıyoruz;
Kod:
<service
       android:name=".MesajServisi" >
       <intent-filter>
           <action
               android:name="com.google.firebase.MESSAGING_EVENT" />
       </intent-filter>
   </service>

   <service
       android:name=".IDServisi" >
       <intent-filter>
           <action
               android:name="com.google.firebase.INSTANCE_ID_EVENT" />
       </intent-filter>
   </service>

Sıra geldi bildirim gönderme işine;

Console dan 'Notifications' sekmesine girip ekranda tek buton var zaten ona basıyoruz.

Ardından şeklinde ayarlar yapıyoruz;
v4j6qR.png

İstersekde bu ayarlarıda 'Advanced Options' a basıp yapıyoruz;jnygkr.png
Sound 'Enabled' olursa bildirim giderken sesde çalar, 'Disabled' olursa da çalmaz.
Ayriyetten kodlarda bildirim sesi cihazın standart bildirim sesi olarak tanımlıdır.

Bu şekilde uygulamanın yüklü olduğu bütün cihazlara aynı anda eş zamanlı olarak bildirim atabilirsiniz.

Daha sonra bildirim atmak içinse 'Delivery date' ayarını 'Send Later' yapıyoruz.

Ayrıca console a girdiğiniz package name ve uygulamanın paket adı aynı olmalı.

Örnek;
81Y6Qk.png 3oEOOM.png

Buda kendi projem, burada yazdığım kodları ekledim konuya örnek olarak direk bunu inceleyebilirsiniz ancak içinden 'google-service.json' dosyamı sildim;
https://drive.google.com/file/d/0B1I1_H5...sp=sharing
19-06-2016, Saat: 18:14
#2
Eline Sağlık fırat.
Rygebin Kullanıcısının İmzası
Cevapla
19-06-2016, Saat: 18:16
#3
(19-06-2016, Saat: 18:14)Rygebin Nickli Kullanıcıdan Alıntı: Eline Sağlık fırat.
Saol.
Cevapla
19-06-2016, Saat: 19:24
#4
Elinize sağlık  Teşekkur
AykutKacar03 Kullanıcısının İmzası
WWW
Cevapla
19-06-2016, Saat: 22:01
#5
(19-06-2016, Saat: 19:24)AykutKacar03 Nickli Kullanıcıdan Alıntı: Elinize sağlık  Teşekkur
Rica ederim.
Cevapla
27-11-2016, Saat: 09:37
#6
Yalnızca alttaki satırı ekle derken neyi kastettin
Cevapla
29-11-2016, Saat: 21:21
#7
@H0lligan bana bunu yaparmısın 2 haftadır uğraşıyorum olmuyor örneği de denedim kabul edersen json dosyasını da veririm
Cevapla
03-12-2016, Saat: 19:07
#8
(29-11-2016, Saat: 21:21)alperen06 Nickli Kullanıcıdan Alıntı: @H0lligan bana bunu yaparmısın 2 haftadır uğraşıyorum olmuyor örneği de denedim kabul edersen json dosyasını da veririm

Sorun ne tam olarak yardımcı olayım
Cevapla
04-12-2016, Saat: 17:33
#9
(03-12-2016, Saat: 19:07)H0lligan Nickli Kullanıcıdan Alıntı:
(29-11-2016, Saat: 21:21)alperen06 Nickli Kullanıcıdan Alıntı: @H0lligan bana bunu yaparmısın 2 haftadır uğraşıyorum olmuyor örneği de denedim kabul edersen json dosyasını da veririm

Sorun ne tam olarak yardımcı olayım

Ya maniseft hata veriyor yada bildirim gelmiyor
Cevapla
04-12-2016, Saat: 19:24
#10
(04-12-2016, Saat: 17:33)alperen06 Nickli Kullanıcıdan Alıntı:
(03-12-2016, Saat: 19:07)H0lligan Nickli Kullanıcıdan Alıntı: Sorun ne tam olarak yardımcı olayım

Ya maniseft hata veriyor yada bildirim gelmiyor

hata nedir
Cevapla
 


Konu ile Alakalı Benzer Konular
Konular Yazar
Önemli [ANLATIM] Android Terminal Emulator Komutları fortpus
  [Kitkat][Anlatım]Cihaza Format Atmadan Ekran Kilidi Şifresini Kaldırmak NinjaAssasin
  [Anlatım][6582][6589][6592]Kitkat Custom Rom Portlamak NinjaAssasin
  [ANLATIM]Gif ile Boot Animation Yapmak Rrcp
  [ANLATIM] Rootlu cihazdan bilgisayarsız ota dosyası alma mstf



Konuyu Okuyanlar: 1 Ziyaretçi
  Tarih: 17-11-2017, Saat: 20:03