当应用处于非活动状态时,未调用Firebase onMessageReceived

时间:2016-11-16 07:22:57

标签: android firebase firebase-cloud-messaging

我在Android上使用Firebase云消息传递。

  • 当应用程序位于前台时,我可以成功接收通知和数据消息。
  • 文档指出,如果在应用程序在后台时收到通知消息,则Firebase将代表应用系统托盘发送通知。这对我来说无法正常工作
  • 如果发送了数据消息且应用程序在后台,则成功调用onMessageReceived方法。
  • 最<令人不安的情况是指 强制停止 应用程序,然后尝试发送通知或数据信息。在这种情况下, onMessageReceived方法不会被调用
  • 我已经看过很多关于SO讨论背景用例的文章,但是当应用程序完全停止时,我还没有看到为什么没有收到消息的任何解释/强>

我的清单中有以下内容:

<service android:name=".MyFirebaseMessagingService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>
<service android:name=".MyInstanceIdService">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
    </intent-filter>
</service>

这是文档有关扩展FirebaseMessagingService的内容:

  

如果您想要在后台接收应用上的通知而不想进行任何消息处理,则需要这样做。

“在后台接收应用通知之外的消息处理”并不完全清楚它们的含义。我只能假设他们正在谈论在应用关闭时处理消息。

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:6)

如果强制停止某个应用,则在重新启动应用之前,您不会收到任何通知。在重新启动应用程序之前,您的所有代码都无效。

该应用的所有服务也将停止,直到用户再次手动启动该应用

答案 1 :(得分:1)

问题在于你的后端。请参阅this回答。当消息包含df['total number'] = df.number1.mul(df.number2, fill_value=0).div(100) print (df) number1 number2 total number 0 400.0 90.0 360.000 1 35.5 50.0 17.750 2 678.0 3.4 23.052 3 NaN 5.2 0.000 对象时,仅当应用程序是前台时才调用onMessageReceived。所以你必须只使用notification个对象。例如:

data

这适用于所有情况。

答案 2 :(得分:1)

要使用API​​发送消息,您可以使用名为AdvancedREST客户端的工具。

{ "data": {
"image": "https://ibin.co/2t1lLdpfS06F.png",
"message": "Firebase Push Message Using API"
"AnotherActivity": "True" },"to" : "f25gYF3***********************HLI"}

答案 3 :(得分:0)

在清单活动中添加操作,如下所示:

echo $completestring | grep -o "[0-9][0-9]*" | wc -l
echo $completestring | grep -o "[a-zA-Z][a-zA-Z]*" | wc -l

在发送通知服务器中添加click_action(我的示例是PHP)

<activity
   android:name=".ActivityFCM"
   android:screenOrientation="sensor"
   android:windowSoftInputMode="stateHidden">
   <intent-filter>
       <action android:name="AnyNameYouWant" />
       <category android:name="android.intent.category.DEFAULT" />
   </intent-filter>
</activity>

答案 4 :(得分:-1)

使用此方法是您的MainActivity的onCreate方法

        if (getIntent().getExtras() != null) { 
        // I Wrote here. 
        Intent intent = new Intent(MainActivity.this, NotificationActivity.class); 
        startActivity(intent); 
    }