2017-12-27 10 views
1

ich recherchiert von Get value from RemoteMessage from FCM onMessageReceived method für mein Problem aber nichtErstellen Sie ein benutzerdefinierten Daten für Parameter auf Feuerbasis auf Push-Benachrichtigung nennen

Ich mag geholfen benutzerdefinierte Daten in Firebase schaffen, dass die Daten auf meiner Push-Benachrichtigung zu rufen. Mindestens diese Daten können onMessageReceived-Methode aufrufen.

Mein webservice

$msg = array 
(
    'body'  => "$message", 
    'title'  => "Approval System", 
    'sound'  => 'default', 
    'vibrate' => 1, 
    'largeIcon' => 'large_icon', 
    'smallIcon' => 'small_icon' 

); 
$fields = array 
(
    'registration_ids' => $tokens, 
    'questionTitle'  => "Test", 
    'notification'  => $msg 
    ); 


$headers = array(
    'Authorization:key = XXX', 
    'Content-Type: application/json' 
    ); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 
$result = curl_exec($ch);   
if ($result === FALSE) { 
    die('Curl failed: ' . curl_error($ch)); 
} 
curl_close($ch); 
return $result; 

und meine onMessageReceived Methode

Bundle bundle = new Bundle(); 
bundle.putString("DATA",messageBody); 
Intent intent = new Intent(FirebaseMessage.this, ApprovalSystemActivity.class); 
intent.putExtras(bundle); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, PendingIntent.FLAG_ONE_SHOT 
); 

Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
     .setSmallIcon(R.drawable.notif) 
     .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.notif)) 
     .setSound(defaultSoundUri) 
     .setStyle(new NotificationCompat.BigTextStyle() 
       .bigText(messageBody)) 
     .setAutoCancel(true) 
     .setContentTitle("Approval System") 
     .setContentText(messageBody) 
     .setContentIntent(pendingIntent); 

NotificationManager notificationManager = 
     (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); 

, wie kann ich "questionTitle" auf $ Felder Array java android nennen? leid für meine Frage, ob nicht

谢谢

+0

Veröffentlichen Sie eine Beispiel-JSON, die Sie im Gerät –

+0

empfangen Ich habe Daten mit remoteMessage.getNotification() erhalten. GetBody() –

+0

Ich meinte die JSON, die Sie vom Server senden. Posten Sie das. –

Antwort

1

Sie haben Verständnis für Ihre JSON-Struktur zu ändern. Setzen Sie den "questionTitle" Feld innerhalb einer "Daten" Objekt

{ 
    "registration_ids": [ 
    "dTlWTEzmJZk:APA91bF2COvY_WPcybE6okJv2a‌​9qUkEUieDOP6q_Q204q1‌​JMz-l2Un49M5cPg4WzE5‌​ODTFyU_82Sz5lvR2zGO6‌​Al_51lY1AyfEuw890jZ9‌​YZ5pWn8kUjClAEwNjxBZ‌​8eELQABRndhQom" 
    ], 
    ‌​"notification": { 
    "bod‌​y": "xoa", 
    "title": "Ap‌​proval System", 
    "sound": "default", 
    "vibrate": 1, 
    "largeIcon": "large_ico‌​n", 
    "smallIcon": "smal‌​l_icon" 
    }, 
    "data": { 
    "qu‌​estionTitle": "Test" 
    } 
} 

Um dies zu JSON machen ändern Sie Ihre PHP:

$msg = array 
(
    'body'  => "$message", 
    'title'  => "Approval System", 
    'sound'  => 'default', 
    'vibrate' => 1, 
    'largeIcon' => 'large_icon', 
    'smallIcon' => 'small_icon' 

); 

$dat = array 
(
    'questionTitle'  => "Test" 
); 

$fields = array 
(
    'registration_ids' => $tokens, 
    'notification'  => $msg, 
    'data'  => $dat 
); 

Und dann in der Service-Klasse erhalten sie von

String questionTitle = remoteMessage.getData().get("questionTitle"); 
+0

Hat das dein Problem gelöst? –

+0

$ fields = array \t \t \t ( \t \t \t \t 'registration_ids' \t => Array ($ registration_ids), \t \t \t \t 'questionTitle' \t \t => "Test", \t \t \t \t ‚Benachrichtigung '\t \t => $ msg \t \t \t); wie zu dieser Struktur wechseln? Ich denke, Service von Ihrem Weg anrufen, aber ich bin nicht meine JSON Struktur ändern, weil ich Ihre JSON Struktur nicht verstehe Sorry ich bin Neuling –

+0

Ich habe meine Antwort bearbeitet, enthalten die PHP, um die erforderlichen JSON. Lass es mich wissen, wenn es funktioniert –

Verwandte Themen