当前位置: 首页 > 知识库问答 >
问题:

FireBase云消息传递不工作

鞠侯林
2023-03-14

我正在尝试使用FireBase云消息传递。我正在接收令牌,但它没有从控制台收到任何通知。这是我的舱单:

  <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="careerage.jobseeker.app"
android:hardwareAccelerated="true"
android:versionCode="1"
android:versionName="0.0.1">

<uses-sdk
    android:minSdkVersion="16"
    android:targetSdkVersion="23" />

<supports-screens
    android:anyDensity="true"
    android:largeScreens="true"
    android:normalScreens="true"
    android:resizeable="true"
    android:smallScreens="true"
    android:xlargeScreens="true" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<android:uses-permission android:name="android.permission.READ_PHONE_STATE" />
<android:uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<application
    android:hardwareAccelerated="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:supportsRtl="true">
    <activity
        android:name=".MainActivity"
        android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
        android:label="@string/activity_name"
        android:launchMode="singleTop"
        android:theme="@android:style/Theme.DeviceDefault.NoActionBar"
        android:windowSoftInputMode="adjustResize">
        <intent-filter android:label="@string/launcher_name">
            <action android:name="android.intent.action.MAIN" />

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

    <service
        android:name=".TokenService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
        </intent-filter>
    </service>
    <service
        android:name=".NotificationService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
    </service>
</application>

我的代码与示例中的代码几乎相同:

public class NotificationService extends FirebaseMessagingService {

private void sendNotification(String messagebody) {
    Intent intent = new Intent(this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 , intent,
            PendingIntent.FLAG_ONE_SHOT);

    Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.icon)
            .setContentTitle("Notified")
            .setContentText(messagebody)
            .setAutoCancel(true)
            .setSound(defaultSoundUri)
            .setContentIntent(pendingIntent);

    NotificationManager notificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    notificationManager.notify(0 , notificationBuilder.build());
}

private void sendSnackbar(String messagebody)
{
    Toast.makeText(this,"Notified",Toast.LENGTH_LONG).show();
}

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    Toast.makeText(this,"Message Received",Toast.LENGTH_LONG).show();

        Log.d("Notification Received",remoteMessage.getNotification().getBody());

        sendNotification(remoteMessage.getNotification().getBody());
    sendSnackbar(remoteMessage.getNotification().getBody());
}

}

我在这里检查了一个问题,Firebase云消息通知未被设备接收,但仍然无法工作。

共有2个答案

卢承弼
2023-03-14

您需要使用下面的整个软件包名称更改服务,

<service
    android:name="your.package.name.TokenService">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
    </intent-filter>
</service>
<service
    android:name="your.package.name.NotificationService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

如果它不工作,请让我知道。

林华皓
2023-03-14

尝试使用服务api调用发送消息。它将为您提供响应代码和响应json,这可能有助于您了解无法使用FCM的原因。

此处应答的服务呼叫使用-应用程序处于后台时未调用Firebase onMessageReceived

 类似资料:
  • 添加了从FCM到Facebook的API密钥 但从FB控制台“推送活动设置验证”到有效的“您的设备令牌”-不工作 错误: 无法验证用于发送消息的发件人帐户。这可能是由于无效的项目号作为密钥发送,或者密钥是有效的,但禁用了FCM服务,或者我们的服务器没有在服务器密钥IP中列入白名单。 是什么导致了这些问题?有什么日志我可以看吗?

  • 我正在尝试让Firebase云消息传递正常工作。我现在只是想做个测试。我所做的就是这篇文章的全部内容: https://firebase.google.com/docs/cloud-messaging/js/client?authuser=0#retrieve-the-current-registration-token 然后在最后你会看到这个: 然后我复制这个,并通过访问Firebase(网站)

  • 我尝试以下代码: 我的清单: 出什么问题了?我的console.log(消息)返回出厂错误,如下所示: bad-pus-set:"用于存储/查找的FCM推送集不是有效的推送集字符串。"坏范围 “服务工作者作用域必须是至少包含一个字符的字符串。”发件人id错误 “请确保在传递到firebase.initializeApp()的选项中正确设置了'messagingSenderId'。订阅错误。” “订

  • 我必须在SpringJava中为多层架构制作一个RESTAPI,其中需要为Firebase云消息传递(FCM)构建DAO、控制器和服务管理器,以向android应用程序发送推送通知消息,但我无法在Java中配置服务器以向设备发送通知。我怎么能?

  • 文件。当前密钥、web API密钥和服务器密钥之间有什么区别,在哪里可以找到当前密钥FCM控制台?我找不到它。

  • FCM服务未向我的iOS应用程序发送消息。 > App CAN成功接收APNs令牌和实例ID令牌 App CAN使用推送通知实用程序利用. p8令牌在后台成功接收来自APN的推送 #2中使用的相同APNs密钥上传到Firebase控制台 应用程序无法接收Firebase控制台中Notification Composer发送的消息,也无法使用CURL请求接收消息。 应用程序在通过FCM发送时不显示任