Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi Firebase Post işlemi
#1
Merhabalar,
Bir süredir Android & Delphi işbirliği ile geliştiriyorum bildirim bölümüne geldi sıra.

Android tarafında Firebase bağlantılarını hallettim, firebase'in konsolundan mesaj attığımda telefona düşüyor.

Ama  benim bu mesajları elbette Delphi tarafından göndermem gerekiyor. Bir kaç deneme yaptım ama beceremedim kafama takıldı Sad

Böyle bir url'imiz var "https://fcm.googleapis.com/fcm/send"

Bu url'e aşağıdaki gibi bir json post etmem gerekiyor.

{
   "to": "Android cihazın token bilgisi", 
   "notification": { 
       "body": "Merhaba Burası Delphican", 
       "title": "http://www.delphican.com"
   },
   "data": { 
       "site_adi": "delphican", 
       "link": "http://www.delphican.com"
   }
}


Post ederken Header'im de bu bilgilerin bulunması gerekiyor.
  'Authorization:key=UYGULAMAFİREBASEAPİKEYİ'
  'Content-Type:application/json'

Bunu tecrübe eden oldu mu ?

Bu şekilde php kodu buldum ama php hiç bilmiyorum .


PHP Kod:
$firebase_url 'https://fcm.googleapis.com/fcm/send';

$fields = array(
  'to' => $token,
  'notification' => array('title' => 'delphican''body' => 'delphican.com'),
  'data' => array('site_adi' => 'delphican','linki'=>'http://www.delphican.com/')
);

$headers = array(
   'Authorization:key='.UYGULAMAFİREBASEAPİKEYİ,
   'Content-Type:application/json'
);


$ch curl_init();
curl_setopt($chCURLOPT_URL$firebase_url);
curl_setopt($chCURLOPT_POSTtrue);
curl_setopt($chCURLOPT_HTTPHEADER$headers);
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4 );
curl_setopt($chCURLOPT_POSTFIELDSjson_encode($fields));   
$result 
curl_exec($ch);
curl_close($ch); 
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#2
bu konuda benimde aklıma gelen bir soru var Firebase bana şöyle bir artı sağlar mı benim uygulaman açılmadığı, çalışmıyor olduğu halde istediğim bir kişiye veya toplu olarak mesaj gönderebilir miyim.
yok benim uygulaman çalması gerekiyor sa kendi sunucuda yeni bildirim varı bakar onu aktif edebilirim zaten
Cevapla
#3
Merhaba firebase i biraz da tecrübe edinmek için kullanıyorum.

Normalde servis yazarım Androidde, kullanıcı uygulamayı kapasada, arkaplanda kontrol yapıp bildirim basarım.
Telefonu kapatıp açsa, uygulamayı açmasa dahi servisim çalışır aynı Windows hizmeti gibi.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#4
(08-12-2017, Saat: 22:49)nguzeller Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olbu konuda benimde aklıma gelen bir soru var Firebase bana şöyle bir artı sağlar mı benim uygulaman açılmadığı, çalışmıyor olduğu halde istediğim bir kişiye veya toplu olarak mesaj gönderebilir miyim.
yok benim uygulaman çalması gerekiyor sa kendi sunucuda yeni bildirim varı bakar onu aktif edebilirim zaten

Merhaba,
yhackup'ın da belirttiği gibi uygulamanıza bir Android Service eklerseniz; uygulamanız kapalı olduğunda bile servisiniz çalışacaktır. Servise gönderdiğiniz bildirim de uygulamayı açmanıza yetecektir. Yada servis tarafında istediğiniz bir olayda veya anda ana uygulamanızın Activity'sini çalıştırabilirsiniz.
Önemli Not: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#5
Merhabalar Sorunu çözdüm,

Delphi Kodları bu şekilde,
const
apikey = 'AIzaSyDJ0Y- uygulama api key -umXdZuQ';
var
 SStream: TStringStream;
 Response: TMemoryStream;
 t: TStringList;
 Request: TclHttpRequest;
begin
 t         := TStringList.Create;
 Response  := TMemoryStream.Create;
 Request   := TclHttpRequest.Create(nil);
 SStream   := TStringStream.Create(Memo2.Text);
   try
     try
         Request.RequestStream := SStream;
         Request.Header.ContentType   := 'application/json';
         Request.Header.ExtraFields.Add('Authorization:key='+apikey)   ;
         Request.Header.ContentLength := IntToStr(SStream.Size);
         firebase.post('https://fcm.googleapis.com/fcm/send', Request,Response);
         Response.Position := 0;
         t.LoadFromStream(Response);
     except on E: Exception do  Memo1.Lines.Add(e.Message)
     end;
     Memo1.Text :=  t.Text;
   finally
      t.Free;
      Response.Free;
      Request.Free;
      SStream.Free;
   end;
end;

Post edilecek json şeması bu şekilde,
Kod:
{
   "data": {
   "site_name": "DelphiCan",
   "site_url": "www.delphican.com"
 },
 "to" : "cjM5flA4GYo:APA91bF2ZX0ES6sv- Uygulama Token key  -bSpmy6WykfOReGmVix"
}


Eğer Başarılı ise dönen json,
Kod:
{
"multicast_id":7530974----42509,
"success":1,
"failure":0,
"canonical_ids":0,
"results":[
{
"message_id":"0:1512973893794------1402f9fd7ecd"
}
]
}

Eğer Başarısız ise dönen json,
Kod:
{
"multicast_id":6714294882636152900,
"success":0,
"failure":1,
"canonical_ids":0,
"results":[
{
"error":"InvalidRegistration"
}
]
}


Böylece, Delphiden FCM'ye notificaiton post ederek, Android cihazımızda Bildirimi gösterdik.

lbAjBB.png
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi AVD Manager kullanımı Bay_Y 4 72 17-02-2018, Saat: 14:09
Son Yorum: hyperxman
  Delphi Android Java Tetikleyici hyperxman 0 63 15-02-2018, Saat: 01:06
Son Yorum: hyperxman
  Delphi Android Sayı Karmaşası [Çözüldü] codder71 2 152 12-01-2018, Saat: 15:54
Son Yorum: codder71
  Delphi Dahili Hafıza Boyutu Öğrenme codder71 4 166 08-01-2018, Saat: 01:33
Son Yorum: codder71
  Delphi Android Java kullanmak AliZairov 10 931 21-12-2017, Saat: 18:09
Son Yorum: Abdullah ILGAZ



Konuyu Okuyanlar: 1 Ziyaretçi