$notify = array("body_loc_key" => "label_newuser_notify", "username"=> $username,"priority" => "high");
$post = array(
'registration_ids' => $fcm_ids,
'notification' => $notify,
'priority' => "high",
'data' => $this->data,
'content_available' => true,
);
Php tarafı Şu şekilde olacak anladığım kadarıyla üstadım değilmi?
Birde ben fcm idleri db den çekip gönderitorum normalde. Bunun yerine /topic/all yapsam yine hepsine gidiyor sanırım.
Ve bu topic olayını cihaz diline göre gönderebiliyor muyuz? İlave bişey yapmamız gerekirmi yapılabilşyorsa?
Evet, doğru anlamışsınız. PHP tarafındaki kod örneği şu şekilde olacaktır:
$notify = array("body_loc_key" => "label_newuser_notify", "username"=> $username,"priority" => "high");
$post = array(
'registration_ids' => $fcm_ids,
'notification' => $notify,
'priority' => "high",
'data' => $this->data,
'content_available' => true,
);örneğin, $notify dizisinde bildirim için gerekli parametreleri belirtir ve $post dizisinde bildirimi göndermek için gereken diğer parametreleri belirtir. registration_ids alanına FCM ID'lerini sağlamanız gerekmektedir.
Evet, /topics/all kullanarak bildirim gönderirseniz, bu bildirim tüm cihazlara gidecektir. /topics/all hedefe sahip tüm aboneleri temsil eder.
Ancak cihaz diline göre bildirim göndermek için /topics/all kullanmanız yeterli olmayacaktır. Firebase Messaging, cihaz diline göre bildirim göndermek için özel bir mekanizma sunmamaktadır. Bunun yerine, Android tarafında farklı dil ayarlarına sahip kullanıcılara farklı bildirimler göndermek için istemci tarafında uygulama düzeyinde bazı işlemler yapmanız gerekecektir.
Örneğin, Android istemcinizde dil seçeneği değiştiğinde veya uygulama başlatıldığında dil bilgisini sunucuya iletebilirsiniz. Sunucu, kullanıcının diline göre uygun bildirimi seçebilir ve FCM ile bu bildirimi gönderebilirsiniz.
function getUserLanguage() {
$acceptLanguage = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$languages = explode(',', $acceptLanguage);
// İlk dil tercihini alabilirsiniz
$userLanguage = strtolower(substr(chop($languages[0]), 0, 2));
return $userLanguage;
}
$userLanguage = getUserLanguage();- Kullanıcının dilini oturum (session) değişkeniyle saklama:
session_start();
// Dil bilgisini oturum değişkenine kaydetme
$_SESSION['language'] = 'en'; // Örnek olarak "en" (İngilizce) olarak ayarladık
// Dil bilgisini almak için oturum değişkenini kullanma
$userLanguage = $_SESSION['language'];
// Örnek URL: r10.net?lang=en
$userLanguage = $_GET['lang'];
Yukarıdaki örnekler, kullanıcının dil bilgisini almanızı sağlayacak temel yöntemlerdir. Hangi yöntemi kullanacağınız, uygulamanızın gereksinimlerine ve yapısına bağlı olacaktır. Dil bilgisini aldıktan sonra, bu bilgiyi kullanarak uygun bildirimi seçip FCM ile gönderebilirsiniz.
Bu durumda, sunucu tarafındaki PHP kodunda kullanıcının dil bilgisini alacak bir mekanizma olması gerekecektir. Kullanıcının dil bilgisini doğrudan FCM kullanarak belirtme imkanı bulunmamaktadır. Dil bilgisini alarak sunucu tarafında ilgili bildirimi seçip göndermeniz gerekmektedir.
Örnek:
Accept-Language function getUserLanguage() {
$acceptLanguage = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$languages = explode(',', $acceptLanguage);
$userLanguage = strtolower(substr(chop($languages[0]), 0, 2));
return $userLanguage;
}
$userLanguage = getUserLanguage();
$notificationText = '';
if ($userLanguage === 'tr') {
$notificationText = 'Merhaba, yeni bir kullanıcı kaydoldu.';
} elseif ($userLanguage === 'en') {
$notificationText = 'Hello, a new user has signed up.';
} else {
$notificationText = 'Hello, a new user has signed up.';
}
$notify = array(
'body' => $notificationText,
'priority' => 'high'
);
$post = array(
'registration_ids' => $fcm_ids,
'notification' => $notify,
'priority' => 'high',
'data' => $this->data,
'content_available' => true,
);Bu örnekte, getUserLanguage() fonksiyonu ile kullanıcının dil tercihini alıyoruz. Ardından, dil tercihine göre bildirim metnini belirliyoruz. Eğer kullanıcının dili Türkçe (tr) ise "Merhaba, yeni bir kullanıcı kaydoldu." mesajını, İngilizce (en) veya başka bir dil ise "Hello, a new user has signed up." mesajını kullanıyoruz.
Sonra, bildirim için gerekli diğer parametreleri belirleyerek $notify ve $post dizilerini oluşturuyoruz. $notify dizisi bildirim metnini ve önceliğini içerir. $post dizisi ise FCM ID'lerini, bildirimi, önceliği ve diğer verileri içerir. Örneğin, dil metinlerini bir dil dosyasından veya veritabanından okuyabilirsiniz.