How to send push notifications from server to app using Firebase?

人走茶凉 提交于 2019-12-22 12:41:05

问题


I'm trying to send push notifications from server to app using Firebase, but when the notification reaches app, my app is crashing.

PHP code:

       <?php

       $registrationIds = array("USER-DEVICE-TOKEN" );

       $message = array
       (
        'message'   => 'My awesome message',
        'title'     => 'My awesome title',
        'subtitle'  => 'My awesome subtitle',
        'tickerText'    => 'My awesome Ticker text',
        'vibrate'   => 1,
        'sound'     => 1,
        'largeIcon' => 'large_icon',
        'smallIcon' => 'small_icon'
       );


       $url = 'https://fcm.googleapis.com/fcm/send';
       $fields = array(
         'registration_ids' => $registrationIds,
         'data' => $message
        );
       $headers = array(
        'Authorization:key = GOOGLE-API-KEY',
        '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);

       echo $result;

Output of PHP Script

My Firebase messaging service:

public class MyFirebaseMessagingService extends FirebaseMessagingService {

private static final String TAG = "MyFirebaseMsgService";

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    //Displaying data in log
    //It is optional
    Log.d(TAG, "From: " + remoteMessage.getFrom());
    Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody()); // LINE 24
    //Calling method to generate notification
    sendNotification(remoteMessage.getNotification().getBody(),remoteMessage.getNotification().getTitle());
}

//This method is only generating push notification
//It is same as we did in earlier posts
private void sendNotification(String messageBody,String messageTitle) {
    Intent intent = new Intent(this, LoginActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
            PendingIntent.FLAG_ONE_SHOT);

    Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.mainlogo)
            .setContentTitle(messageTitle)
            .setContentText(messageBody)
            .setAutoCancel(true)
            .setSound(defaultSoundUri)
            .setContentIntent(pendingIntent);

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

    notificationManager.notify(0, notificationBuilder.build());
}
       }

Crashing error when push notification comes

Hope for your help


回答1:


Check if remoteMessage.getNotification() is not NULL. I think it is NULL because you are not sending the param 'notification' in your $fields array of your PHP code. You are sending 'data'. So, when you send the parameter 'data' you have to get that parameter with remoteMessage.getData().

Try to print the content of remoteMessage.getData().toString() in your onMessageReceived method. It should print the data you are sending in the notification.

Hope this helps.



来源:https://stackoverflow.com/questions/39035990/how-to-send-push-notifications-from-server-to-app-using-firebase

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!