【问题标题】:Firebase cloud messaging `onMessageReceived` not being called?Firebase云消息传递`onMessageReceived`没有被调用?
【发布时间】:2018-03-04 01:55:46
【问题描述】:

我正在测试 Firebase 云消息传递。我有以下课程

public class MyFirebaseMessagingService extends FirebaseMessagingService {
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        Log.d("From: ", "From: " + remoteMessage.getFrom());
    }
}

我的应用确实为我的设备生成了一个令牌,我正在通过 Firebase 控制台对此进行测试。当我从 Firebase 控制台发送测试消息时,我收到以下消息

03-03 18:16:34.638 12091-12871/com.rev.future D/FA: Logging event (FE): notification_receive(_nr), ..............
03-03 18:16:34.672 12091-12871/com.rev.future D/FA: Logging event (FE): notification_foreground(_nf), ...............
03-03 18:16:34.690 12091-12871/com.rev.future D/FA: Connected to remote service
03-03 18:32:24.462 12091-15272/com.rev.future D/FA: Logging event (FE): user_engagement(_e),..........
03-03 18:32:24.534 12091-15272/com.rev.future D/FA: Connected to remote service

但我从未看到“发件人:”消息,这让我相信 onMessageReceived 没有被调用

为什么当我向我的设备发送消息时没有调用 onMessageReceived?

编辑:我也在添加我的清单

<?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="com.rev.future">

    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_MMS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.provider.Telephony.SMS_RECEIVED" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />

    <application
        android:allowBackup="true"
        android:debuggable="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:ignore="HardcodedDebugMode">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- BroadcastReceiver that listens for incoming SMS messages -->
        <receiver
            android:name=".SmsReceiver"
            android:permission="android.permission.BROADCAST_SMS">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_DELIVER" />
            </intent-filter>
        </receiver>

        <!-- BroadcastReceiver that listens for incoming MMS messages -->
        <receiver
            android:name=".MmsReceiver"
            android:permission="android.permission.BROADCAST_WAP_PUSH">
            <intent-filter>
                <action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />

                <data android:mimeType="application/vnd.wap.mms-message" />
            </intent-filter>
        </receiver>

        <!-- Activity that allows the user to send new SMS/MMS messages -->
        <activity android:name=".ComposeSmsActivity">
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <action android:name="android.intent.action.SENDTO" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="sms" />
                <data android:scheme="smsto" />
                <data android:scheme="mms" />
                <data android:scheme="mmsto" />
            </intent-filter>
        </activity>

        <!-- Service that delivers messages from the phone "quick response" -->
        <service
            android:name=".HeadlessSmsSendService"
            android:exported="true"
            android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE">
            <intent-filter>
                <action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />

                <category android:name="android.intent.category.DEFAULT" />

                <data android:scheme="sms" />
                <data android:scheme="smsto" />
                <data android:scheme="mms" />
                <data android:scheme="mmsto" />
            </intent-filter>
        </service>

        <activity android:name=".PermissionActivity" />

        <service android:name=".MyFirebaseInstanceIDService">
            <intent-filter>
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
            </intent-filter>
        </service>
        <service
            android:name=".MyFirebaseMessagingService"
            android:enabled="true"
            android:exported="true"></service>
    </application>

</manifest>

【问题讨论】:

标签: android firebase firebase-cloud-messaging


【解决方案1】:

清单中消息服务的声明缺少意图过滤器:

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

有关参考,请参阅setup instructions

【讨论】:

  • 我已经更新了我的清单。这就是我现在拥有的pastebin.com/5eH11sbx 但是当我运行我的应用程序时,我得到“错误:任务':app:processDebugManifest'的执行失败。> 清单合并失败,出现多个错误,请参阅日志”,当我检查合并的选项卡时,我得到这些错误“Merging Errors: Error: Element service#com.rev.future.MyFirebaseMessagingService at AndroidManifest.xml:102:9-107:19 与在 AndroidManifest.xml:98:9-101:47 应用程序主清单中声明的​​元素重复(此文件),第 101 行错误:验证失败,退出应用程序主清单(此文件)“
  • 您在清单中声明了两次服务。删除原始声明并保留在此答案中发布的声明。
猜你喜欢
  • 2018-08-04
  • 2016-10-09
  • 1970-01-01
  • 2018-12-15
  • 1970-01-01
  • 1970-01-01
  • 2020-06-21
  • 1970-01-01
  • 2017-10-05
相关资源
最近更新 更多