我尝试使用Firebase为Android提供推送通知。但我面临着非常奇怪的问题。当我在前台发送推送时,一切正常。当我在后台发送推送时(我只发送数据),一切都正常,直到我回到前台,然后回到后台。
当我的应用程序第二次转到后台时,不会调用我的FirebaseMessagingService。另外,请注意,我使用的是Android Emulator。代码:
public class MyAndroidFirebaseMsgService extends FirebaseMessagingService {
private static final String TAG = "MyAndroidFCMService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d(TAG, "From: " + remoteMessage.getFrom());
}
}
//...
public class MyAndroidFirebaseInstanceIdService extends FirebaseInstanceIdService {
private static final String TAG = "MyAndroidFCMIIDService";
@Override
public void onTokenRefresh() {
//Get hold of the registration token
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
//Log the token
Log.d(TAG, "Refreshed token: " + refreshedToken);
}
private void sendRegistrationToServer(String token) {
//Implement this method if you want to store the token on your server
}
}
AndroidManifest。xml:
<service android:name=".MyAndroidFirebaseMsgService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name=".MyAndroidFirebaseInstanceIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
服务器:
curl -H "Content-type: application/json" -H "Authorization:key=<MYKEY>" -X POST -d '{"to": "<MYTOKEN>","data": {"hello": "This is a Firebase Cloud Messaging Device Group Message!"}}' https://fcm.googleapis.com/fcm/send
我如何解决它?
这是正常的,只有当你的应用程序在前台时,通知消息才会传递到你的onMessageReceived回调。如果您的应用程序处于后台或已关闭,则通知中心会显示一条通知消息,该消息中的任何数据都会传递给用户点击通知后启动的意图。
您可以指定click\u操作,以指示用户点击通知时应启动的意图。如果未指定click\u操作,则使用主活动。
当意图启动时,您可以使用
getIntent(). getExtras();检索包含随通知消息一起发送的任何数据的Set。
有关通知消息的详细信息https://firebase.google.com/docs/cloud-messaging/android/receive#sample-接收
我正在使用数据消息,正如Firebase文档所建议的,但没有成功...
我有以下超文本标记语言: 我想提取包含给定文本的h2标记后面的第二个DIV。 正如您可能注意到的,在第一个和第二个div中,p标签不在同一位置。 要在第一个h2之后提取DIV,以下公式将起作用: 但是要提取第二个,用“布拉2”替换“布拉1”将不起作用,因为“p”标签位于其他地方,所以静态选择器将是: 我需要的是一个单一的选择器公式,在这个公式中,无论p块在哪里,改变文本都会使它工作 我试过几种方法
当用户未连接到xmpp时,我正在使用FCM通知进行聊天。 FCM中有两种通知模式1。通知消息2。数据消息 如果我的应用程序最近被清除,我将不会使用数据消息作为通知消息 这种方法适用于除奥利奥以外的所有版本。 对于Oreo,我只有在应用程序未连接到xmpp且处于前台时才会收到通知。我的onMessageReception方法正在被调用。 但当该应用程序仅为奥利奥而被删除或从最近的应用程序中删除时,情
我试图创建一个使用谷歌地图的项目的定位器功能的华为变体。但我的问题是onMapReady()回调在getMapAsync()之后根本不触发 但是当使用huawei map依赖项时,getMapAsync()之后根本不会触发onMapReady回调
我正在使用Firebase,并测试在应用程序处于后台时从服务器向应用程序发送通知。通知发送成功,它甚至出现在设备的通知中心上,但是当通知出现或者即使我单击它,我的FCMessagingService中的onMessageReceived方法也从未被调用。 当我在应用程序处于前台时进行测试时,调用了onMessageReceived方法,所有工作都很好。该问题发生在应用程序在后台运行时。 这是有意为
我试图完成的是解析来自Remotemessage的传入数据,并根据自定义标记对其进行不同的处理。例如,如果数据映射包含一个名为“my_custom_tag”的字段,我希望完全覆盖弹出的标准firebase消息并编写一个自定义消息。 问题是,当应用程序在后台运行时,我放入onMessageReceived的任何代码都不会被触发。当应用程序在前台运行时,它工作得很好,但如果应用程序在后台,它将不会检测