2017-10-14 23 views

回答

0

是的。可以做到这一点。退房参考Firebase Notification Github Repo

推送通知将基于两点

  • 发送到特定设备(基于FCM令牌)
  • 发送到设备的组被触发(基于订阅的话题)

onMessageReceived(RemoteMessage remoteMessage)将被称为如果设备接收到的消息

能访问REM OTE消息,并以此为基础进行的需要和要求

动作我尽量保持简单的初步发展

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 
    // Do nothing if message is null 
    if (remoteMessage == null) return; 

    // Data exists 
    if (remoteMessage.getData().size() > 0) { 
     // To show the notification pass the entire remote message as string 
     sendNotification(remoteMessage.getData().toString()); 

     // if you've JSON string then decode and handle accordingly 
     // Sample 
     /** 
      try { 
       JSONObject json = new JSONObject(remoteMessage.getData().toString()); 
       sendNotification(JSONObject json); // Need to add method to the class to handle this 
      } catch (Exception e) { 
       Log.e(TAG, "Exception: " + e.getMessage()); 
      }   

     */ 
    } 

    /** 
    * Create and show a simple notification containing the received FCM message. 
    * @param messageBody FCM message body received. 
    */ 
    private void sendNotification(String messageBody) { 
     Intent intent = new Intent(this, MainActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, 
       PendingIntent.FLAG_ONE_SHOT); 

     String channelId = getString(R.string.default_notification_channel_id); 
     Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     NotificationCompat.Builder notificationBuilder = 
       new NotificationCompat.Builder(this, channelId) 
       .setSmallIcon(R.drawable.ic_stat_ic_notification) 
       .setContentTitle("FCM Message") 
       .setContentText(messageBody) 
       .setAutoCancel(true) 
       .setSound(defaultSoundUri) 
       .setContentIntent(pendingIntent); 

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

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