未调用Firebase onMessageReceived()

时间:2017-08-15 09:20:14

标签: android firebase firebase-cloud-messaging

我正在尝试在Android应用程序中实施Firebase推送通知。我已相应地遵循Firebase文档,一切正常,onRefreshToken()也被调用,但是当我尝试使用Firebase控制台发送通知时。它显示已完成但我在Android Studio中看不到任何日志。我确信没有调用'onMessageReceived'。

的AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="app.user.oshyerllc">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    tools:node="replace">
    <meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_app_id" />
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="AIzaSyBf-y05iET2_UyoWTZnKmdjyZXGQKzVCp8" />

    <activity android:name="app.user.oshyerllc.MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="app.user.oshyerllc.OTPVerificationActivity" />
    <activity android:name="app.user.oshyerllc.CreateProfileActivity" />
    <activity android:name="app.user.oshyerllc.LoginActivity" />
    <activity android:name="app.user.oshyerllc.CreateProfileSocialActivity" />
    <activity android:name="app.user.oshyerllc.SocialOTPVerificationAcitvity" />
    <activity android:name="app.user.oshyerllc.MapActivity" />
    <activity
        android:name="com.google.android.gms.auth.api.signin.internal.SignInHubActivity"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />

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

    </service>

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


</application>

OshyerMessagingService.java(在主包内)

package app.user.oshyerllc;


import android.util.Log;   
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;

public class OshyerMessagingService extends FirebaseMessagingService {

    private static final String TAG = "OshyerMessagingService";

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {

            Log.d(TAG,"message recieved");

    }
}

OshyerInstanceIDService.java:

package app.user.oshyerllc;

import android.util.Log;

import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.FirebaseInstanceIdService;

public class OshyerInstanceIDService extends FirebaseInstanceIdService {

    private static final String TAG = "OshyerInstanceIDService";

    @Override
    public void onTokenRefresh() {
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();
        Log.d(TAG, "Refreshed token: " + refreshedToken);
    }
}

这不会给我任何错误。此外,我已经完成了与Stack Overflow上述问题相关的大部分问题。

1 个答案:

答案 0 :(得分:0)

  

onMessageReceived是为大多数消息类型提供的   以下例外:

     
      
  1. 当您的应用在后台时发送通知消息。在这种情况下,通知将传递给   设备的系统托盘。用户点按通知即可打开该应用   默认情况下启动器。

  2.   
  3. 包含通知和数据有效负载的消息,包括后台和前台。在这种情况下,通知将传递给   设备的系统托盘,数据有效负载是在启动器活动的附加内容中提供的。 link

  4.   

您的通知将发送到系统托盘。并且仅当您的应用程序是前台时调用onMessageReceived方法