Öncelikle Google API Console sayfasını açıyor ve “Create Project” butonuna basarak yeni bir proje oluşturuyoruz.
Android projemizin içerisinde kullanacağımız sender id bilgisi, Project Number olarak gösterilen değerdir. Bu değeri bir kenara not ediyoruz.
API & auth altındaki API sekmesine giriyoruz ve Google Cloud Messaging for Android servisini aktif hale getiriyoruz.
Ardından, API & auth altında Credentials sekmesine girip, Create New Key butonuna tıklıyoruz. Karşımıza gelen pencerede Android Key seçeneğini seçiyoruz.
Karşımıza gelen pencerede tekrar Create butonuna basıyoruz.
API key’imiz kullanıma hazır. Bu key değerini de php web servisi içerisinde kullanacağımızdan dolayı bir kenara not ediyoruz.
Şimdi php web servis için gerekli olan kodları sırasıyla paylaşalım.
Öncelikle içerisine kullanıcıları kaydedeceğimiz bir tabloya ihtiyacımız var. Mysql sunucu içerisine giriş yapıp adı gcm olan bir veri tabanı oluşturalım. Ardından aşağıdaki kodu Mysql içerisinden çalıştırıp tablomuzu ekleyelim.
CREATE TABLE IF NOT EXISTS `gcm_users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `gcm_regid` text, `name` varchar(50) NOT NULL, `email` varchar(255) NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Görüldüğü üzere tablomuzun adı gcm_users. İçerisinde otomatik artan bir id kolunu, her kullanıcı için farklı olan gcm registration id bilgisi, adı, mail adresi ve tarih kolonları mevcut.
Şimdi php dosyalarının kod yapılarını paylaşalım.
config.php
Yukarıdaki kod yapısında görüldüğü üzere config dosyasında veri tabanı bağlantısını yapıyoruz. Ayrıca GOOGLE_API_KEY değişkenine biraz önce Google’dan aldığımız API key değerini gönderiyoruz.
function.php
0) { return mysql_fetch_array($result); } else { return false; } } else { return false; } } /** * Get user by email */ function getUserByEmail($email) { $result = mysql_query("SELECT * FROM gcm_users WHERE email = '$email' LIMIT 1"); return $result; } // Getting all registered users function getAllUsers() { $result = mysql_query("select * FROM gcm_users"); return $result; } // Validate user function isUserExisted($email) { $result = mysql_query("SELECT email from gcm_users WHERE email = '$email'"); $NumOfRows = mysql_num_rows($result); if ($NumOfRows > 0) { // user existed return true; } else { // user not existed return false; } } //Sending Push Notification function send_push_notification($registatoin_ids, $message) { // Set POST variables $url = 'https://android.googleapis.com/gcm/send'; $fields = array( 'registration_ids' => $registatoin_ids, 'data' => $message, ); $headers = array( 'Authorization: key=' . GOOGLE_API_KEY, 'Content-Type: application/json' ); //print_r($headers); // Open connection $ch = curl_init(); // Set the url, number of POST vars, POST data curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Disabling SSL Certificate support temporarly curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); // Execute post $result = curl_exec($ch); if ($result === FALSE) { die('Curl failed: ' . curl_error($ch)); } // Close connection curl_close($ch); echo $result; } ?>
Function.php dosyasında send_push_notification fonksiyonunu tanımlıyoruz. Bu fonksiyon içerisine aldığı iki değerin birincisi push notification gönderilecek cihazın registration id’si. İkinci değer ise gönderilecek olan mesaj. Sunucu üzerinden push notification işlemi gerçekleştirilmek istenildiğinde bu metot çalıştırılır. Çalıştırılan metot GCM sunucularına gidip bu iki değeri iletir. GCM sunucuları da kendisine gelen registration id değerine sahip olan mobil cihaza mesaj değerini gönderir.
Function.php dosyası içerisine ayrıca tüm kayıtlı kullanıcıları listelemesi için getAllUsers() fonksiyonunu ve birkaç diğer fonksiyonu tanımladık.
loader.php
Loader.php dosyası hem config.php hem de function.php dosyalarını içerisinde çağırdığımız dosyadır.
register.php
"Kaydiniz Yapildi."); $result = send_push_notification($registatoin_ids, $message); echo $result; } else { // user details not found } ?>
Register.php dosyası mobil cihazdan Mysql veri tabanına kayıt yapmayı sağlar. İçerisine kullanıcının adı, mail adresi ve registration id bilgisini alır.
sent_push_notification_message.php
$pushMessage); $result = send_push_notification($registatoin_ids, $message); echo $result; } ?>
Sent_push_notification_message.php dosyası notification göndermeye yarayan dosyadır. Kendisine gelen değerleri belirli bir aşamadan sonra send_push_notification fonksiyonuna gönderir ve push işlemini tetikletir.
index.php
No of Devices Registered: |
||||
|
Index.php dosyası ile ekrandan kayıtlı olan kullanıcıları (mobil cihaz ile gcm_users dosyasına kayıtlı olan) listeleriz. Bu dosya üzerinden kayıtlı kullanıcılardan istediğimiz birine, push notificacation yöntemiyle mesaj gönderebiliriz.
GCM Php Web Service dosyalarını indirmek için tıklayın.
merhaba, google cloud kullandım sanırım sınırı geçmişim 123$ borcum var. sizce bu borcu ödemezsem sorun olur mu bilginiz varmı kredi kartı yerine paypal eklemiştim, adres ve ad soy adım orada farklı. hesabımı farklı gmail adresine ekledim. acaba bir sorun olur mu haciz maciz faiz felan? mail adresimi ekledim mailime cevap verirseniz sevinirim.