2017-10-31 9 views
1

私はアンドロイドアプリケーションのFCM通知を使用しています。ここで私はFCM通知の応答に問題があります。これはコードとレスポンスの下に与えられます。FCM通知応答を適切なJSON形式として取得するにはどうすればよいですか?

<?php 
// API access key from Google API's Console 
define('API_ACCESS_KEY', 'xxxxxxxxxxxxxxxxx'); 
$registrationIds = array('id'=>'xxxxxxxxxxxxxxxx'); 
// prep the bundle 
$msg = array 
(
    'message' => 'here is a message. message', 
    'title' => 'This is a title. title', 
); 
$fields = array 
(
    'registration_ids' => $registrationIds, 
    'data'  => $msg 
); 

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

$ch = curl_init(); 
curl_setopt($ch,CURLOPT_URL, 'https://android.googleapis.com/gcm/send'); 
curl_setopt($ch,CURLOPT_POST, true); 
curl_setopt($ch,CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch,CURLOPT_POSTFIELDS, json_encode($fields)); 
$result = curl_exec($ch); 
curl_close($ch); 
echo $result; 

応答:

{message = here is a message. message, title = This is a title. title } 

しかし、応答が適切なJSON形式ではありません以上。 FCM通知応答を適切なJSON形式として送信する方法を教えてください。

Androidのコードは以下のとおりである:

public class FireMsgService extends FirebaseMessagingService { 

    @Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 
     super.onMessageReceived(remoteMessage); 
     Log.e("remoteMessage-", "remoteMessage--->" + remoteMessage.getData()); 
     // Log.e("getnotification-", "getnotification--->" + remoteMessage.getNotification()); 
     Intent intent = new Intent(this, EventFragment.class); 
     PendingIntent pendingIntent = PendingIntent.getActivity(this, 1410, intent, 
       PendingIntent.FLAG_ONE_SHOT); 
     Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
       //.setSmallIcon(getNotificationIcon()) 
       .setContentTitle("Event Application") 
       .setContentText("Quiz notification") 
       .setAutoCancel(true) 
       .setSound(sound) 
       .setContentIntent(pendingIntent) 
       .setSmallIcon(getNotificationIcon()); 
     NotificationManager notificationManager = 
       (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

    } 

    private int getNotificationIcon() { 
     boolean useWhiteIcon = (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP); 
     return useWhiteIcon ? R.drawable.a_option : R.drawable.a_option; 
    } 
} 

私はremoteMessage.getData()を使用して応答を取得しています。

とFirebase IDクラス

public class FireIDService extends FirebaseInstanceIdService { 

    @Override 
    public void onTokenRefresh() { 
     super.onTokenRefresh(); 
     String tkn = FirebaseInstanceId.getInstance().getToken(); 
     Log.e("tkn","tkn---->"+tkn); 
    } 
} 
+0

あなたはAndroid搭載端末でプッシュを取得していますか? –

+0

はい、私はプッシュしましたが、応答は適切なJSON形式ではありません@ ZahidulIslam – karthik

+0

アンドロイドコードを共有します。 –

答えて

1

Firebaseは地図オブジェクトとしてプッシュ通知メッセージが送信されます。 JSON formateとしてマップを取得するには、JSONObjectクラスを使用できます。

ので、解析はあなたがまた、POJOクラスを作成し、GSONライブラリを使用して解析することができますthis->

JSONObject jsonData = new JSONObject(remoteMessage.getData()); 

のようになります。

+0

ありがとうございます。 – karthik

+0

質問にはマークを付けてください。 – karthik

+0

これが正しい答えだと思うなら、それを受け入れます。 –

関連する問題