Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android FCM通知使用RemoteMessage中的数据_Android_Firebase_Firebase Cloud Messaging - Fatal编程技术网

Android FCM通知使用RemoteMessage中的数据

Android FCM通知使用RemoteMessage中的数据,android,firebase,firebase-cloud-messaging,Android,Firebase,Firebase Cloud Messaging,我有一个应用程序,使用FCM在用户之间发送消息。我已经实现了我的FirebaseMessagingService,它可以处理RemoteMessage的数据。这是RemoteMes的一个示例: { "to" : "cZVz2c3uJBg:APA91bHW...", "data" :{"friend": "mike"}, "notification" : { "title" : "Paltrack", "sound" : "true", "click_action" : "com.wo

我有一个应用程序,使用FCM在用户之间发送消息。我已经实现了我的FirebaseMessagingService,它可以处理RemoteMessage的数据。这是RemoteMes的一个示例:

{
"to" : "cZVz2c3uJBg:APA91bHW...",
"data" :{"friend": "mike"},
"notification" : {
  "title" : "Paltrack",
  "sound" : "true",
  "click_action" : "com.woutkl.groep_2.RegActivityStart"
  }
}

我遇到的第一个问题是(如果这是正确的),当应用程序不在前台时,不会调用onMessageReceived。因此,要在您单击通知后执行某些操作,我将启动该活动,但现在我需要从RemoteMes访问数据,我不知道如何执行此操作。

当应用程序处于后台时,同时包含数据和通知的Firebase消息将不会调用onMessageReceived。这是故意的

单击通知时,数据将添加到作为附加项启动活动的意图中

在您的活动中,获取额外的意图:

Bundle extras = getIntent().getExtras();
现在把所有的标签都放在你的附加资料里。。。并使用您需要的:

if(extras!=null){
   Set<String> keysInExtras = extras.keySet();

   for(String key : keysInExtras){
     //find the keys you need and get the data from the bundle using those keys
   }

}
if(附加值!=null){
Set keysInExtras=extras.keySet();
for(字符串键:keysInExtras){
//找到您需要的密钥,并使用这些密钥从包中获取数据
}
}

当应用程序处于后台时,同时包含数据和通知的Firebase消息将不会调用onMessageReceived。这是故意的

单击通知时,数据将添加到作为附加项启动活动的意图中

在您的活动中,获取额外的意图:

Bundle extras = getIntent().getExtras();
现在把所有的标签都放在你的附加资料里。。。并使用您需要的:

if(extras!=null){
   Set<String> keysInExtras = extras.keySet();

   for(String key : keysInExtras){
     //find the keys you need and get the data from the bundle using those keys
   }

}
if(附加值!=null){
Set keysInExtras=extras.keySet();
for(字符串键:keysInExtras){
//找到您需要的密钥,并使用这些密钥从包中获取数据
}
}

当后台应用程序当时无法从“通知”参数获取通知值时。此时,我们可以从“数据”参数中获取值。所以,无论我们想在通知中显示什么,我们都需要从服务器后端获得具有“data”和“notification”参数值的相同数据的响应

无论何时单击通知,我们都可以通过带有laucher活动的通知消息中的“数据”参数获得该通知消息

AndroidManifest.xml:
当后台应用程序无法从“通知”参数获取通知值时。此时,我们可以从“数据”参数中获取值。所以,无论我们想在通知中显示什么,我们都需要从服务器后端获得具有“data”和“notification”参数值的相同数据的响应

无论何时单击通知,我们都可以通过带有laucher活动的通知消息中的“数据”参数获得该通知消息

AndroidManifest.xml:
可能重复的可能重复的好点在这里,不要忘记目标的发射活动。我首先尝试在MainActivity中获取数据参数,但什么也得不到,因为我的启动器活动是SplashActivity而不是MainActivity!这一点很好,别忘了瞄准发射器活动。我首先尝试在MainActivity中获取数据参数,但什么也得不到,因为我的启动器活动是SplashActivity而不是MainActivity!