<string name="label_newuser_notify">%1$s katıldı.</string>
şeklinde bir satırım var string.xml de.
bu kısmıda googledan bulduğum şekliyle yaptım. ancak body_loc_args a bir şey ekleyip php ile gönderdiğimde ileti gelmiyor. googleın dedğine göre ise sadece bu şekilde gelmesi gerekli.
String text = context.getString(R.string.label_newuser_notify, username); gibide bir örnek buldum. acaba bu username i gönderirken data içindemi belirtmem gerek? yani yine googleın dediği gibi değil hiç birşey.
tek istediğim cron ile kontrolde katılan biri olduğunda nickiyle beraber bildirim atması... bu kadar zor olmamalıydı.
Evet, getString(R.string.label_newuser_notify, username) kullanırken, username değerini gönderirken data içinde belirtmeniz gerekmektedir. Bu şekilde, username değeri ilgili string kaynağında %1$s yerine geçecek ve sonuç olarak doğru metin elde edilecektir.
Örneğin, bir bildirim oluştururken username değerini data içinde belirtebilirsiniz:
String username = "JohnDoe";
JSONObject notificationData = new JSONObject();
notificationData.put("username", username);
Message message = Message.builder()
.putData("title", "Yeni Kullanıcı Katıldı")
.putData("body", "label_newuser_notify")
.putData("body_loc_key", "label_newuser_notify")
.putData("body_loc_args", username)
.setTopic("your_topic")
.build();
String response = FirebaseMessaging.getInstance().send(message);Yukarıdaki örnekte, body_loc_args değerine username değerini ekledik ve bu değer label_newuser_notify string kaynağında %1$s yerine geçecektir.
Bildirim oluştururken data bölümünde username değerini belirttiğinizden emin olun ve bu şekilde bildirimin doğru şekilde oluşturulması sağlanır.
bu googlenin kaynaklarinda body_loc_args kullanarak FCM bildirimi göndermek için kabul ettigi ve güvenlik, hata yönetimi ve diğer faktörleri de dikkate alarak yol gösterdigi yoldur.
php ile username yollayip androidde okutman icin android geliştiricileri kısa paylaşımlarda bulunmuşlardır örnek olarak
PHP TARAFI function sendNotification($username) {
$serverKey = 'YOUR_SERVER_KEY'; // FCM sunucu anahtarını buraya girin
$headers = array(
'Authorization: key=' . $serverKey,
'Content-Type: application/json'
);
$data = array(
'to' => '/topics/all', // Tüm cihazlara göndermek için '/topics/all' kullanılıyor
'data' => array(
'username' => $username
)
);
$payload = json_encode($data);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}Yukarıdaki örnekte, sendNotification fonksiyonu username değerini alarak FCM bildirimini oluşturur ve gönderir. FCM sunucu anahtarını YOUR_SERVER_KEY olarak değiştirmeniz gerekmektedir. sendNotification fonksiyonunu kullanarak istediğiniz zaman bildirim gönderebilirsiniz.
Android tarafında, FirebaseMessagingService sınıfını kullanarak username değerini alabilirsiniz. MyFirebaseMessagingService sınıfının güncellenmiş bir örneği:
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (remoteMessage.getData().containsKey("username")) {
String username = remoteMessage.getData().get("username");
String text = getString(R.string.label_newuser_notify, username);
// Elde edilen metni kullanabilirsiniz
// Örneğin, bildirimi göstermek veya verileri kullanarak başka bir işlem yapmak
showNotification(text);
}
}
private void showNotification(String text) {
// Bildirimi göstermek için gerekli kodu buraya ekleyin
}
}Yukarıdaki örnekte, onMessageReceived metodunda username değeri alınır ve getString metoduyla label_newuser_notify string kaynağı içindeki metin oluşturulur. Bu metni kullanarak istediğiniz işlemleri gerçekleştirebilirsiniz. Örneğin, bildirimi göstermek için showNotification metodunu kullanabilirsiniz.
Bu şekilde, PHP tarafında sendNotification fonksiyonunu kullanarak username değerini alıp Android tarafında FCM bildirimi ile iletebilirsiniz. Android tarafında MyFirebaseMessagingService sınıfını kullanarak username değerini alarak istediğiniz işlemleri gerçekleştirebilirsiniz.
Gibi çeşitli örneklerle çoğalta bilirsiniz