mrc*_*bis 7 android firebase firebase-cloud-messaging
我是android编程的新手,我正在尝试使用firebase实现一个使用推送通知的简单应用程序.我设置了android项目(使用Android Studio 2.2)以及google文档,我可以通过前景中的app而不是后台获得通知.我有两个扩展FirebaseMessagingService(命名MyFirebaseMessagingService)和FirebaseInstanceIdService(命名MyFirebaseInstanceIDService)的类.
在第一个中,我实现了onMessageReceived实现的方法,该方法在应用程序处于前台或当我收到"数据"标记作为通知的一部分时触发.所以我在里面有这段代码:
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
String cappello;
cappello = remoteMessage.getNotification().getBody();
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题是使用上面提到的变量"cappello"更新主布局中的textView.我怎样才能做到这一点?我找到了一些使用不同类的例子,但它们似乎都与这种情况有所不同.
我可以触发一个动作来更新主要布局的某些部分吗?以texView为例?
Ris*_*esh 16
使用广播接收器并在您的活动中注册它,当新消息到来时会触发
简短的例子,在你的FirebaseMessagingService :: onMessageReceived中,你可能有:
cappello = remoteMessage.getNotification().getBody();
Intent intent = new Intent();
intent.putExtra("extra", cappello);
intent.setAction("com.my.app.onMessageReceived");
sendBroadcast(intent);
Run Code Online (Sandbox Code Playgroud)
然后在MainActivity中,实现BroadcastReceiver:
private class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
String state = extras.getString("extra");
updateView(state);// update your textView in the main layout
}
}
Run Code Online (Sandbox Code Playgroud)
并在MainActivity的onResume()中注册它:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.my.app.onMessageReceived");
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
registerReceiver(receiver, intentFilter);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3319 次 |
| 最近记录: |