抱歉这个noob问题,我是android开发的新手。我目前正在开发一个项目,需要向安装了我的应用程序的Android设备发送推送通知。我已经按照firebase的快速入门教程完成了这项工作,并在我的设备上成功收到了通知。
问题:如何检索服务器发送的消息并将该消息显示给我的Android Activity?提前谢谢。
继承我的代码。的 MainActivity.java
public class MainActivity extends AppCompatActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.tv);
/*
* Get the data from push notification and display it in TextView
* */
tv.setText("Message retrieve from Push Notification");
}
这是我的 MyFirebaseMessagingService.java
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
sendNotification(remoteMessage.getNotification().getBody());
}
//This method is only generating push notification
//It is same as we did in earlier posts
public void sendNotification(String messageBody) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
PendingIntent.FLAG_ONE_SHOT);
Intent notificationIntent = new Intent(this, MainActivity.class);
notificationIntent.putExtra("message", messageBody);
// set intent so it does not start a new activity
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_SINGLE_TOP);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("Peoplelink Push Notification")
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notificationBuilder.build());
}
答案 0 :(得分:2)
如果您想为您的Android活动发送消息,请使用FirebaseMessagingService。您可以使用EventBus。 android优化事件总线que简化了活动,片段,线程,服务等之间的通信。减少代码,提高质量。
将EventBus添加到build.gradle文件
compile 'org.greenrobot:eventbus:3.0.0'
注册 MainActivity.java 并创建onMessageEvent方法。
public class MainActivity extends AppCompatActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.tv);
EventBus.getDefault().register(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(String message) {
textView.setText(message);
};
在 MyFirebaseMessagingService.java
中使用EventBus.getDefault().post()
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
EventBus.getDefault().post(remoteMessage.getNotification().getBody());
}
答案 1 :(得分:1)
如果您想发送一些其他消息(通知时显示的消息除外),您可以在高级选项 - >下的字段中设置消息。 firebase控制台上的自定义数据。
例如,将消息作为键,将消息值作为值。
投入后,数据将被发送到设备,并通过意图附加内容传递给您在通知意图中设置的活动。
因此,要获取数据,请在活动onCreate:
上添加此代码Bundle extras = getIntent().getExtras();
if (extras != null) {
tv.setText(extras.getString("message", "empty message"));
}
如果设置正确,将显示该消息。