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

应用程序在后台时发出接收通知

司凡
2023-03-14
  1. 有时当应用程序收到通知时,它不会发出声音。下面是代码段。
private fun createNotificationChannel(
    context: Context, id: String, name: String, description: String,
    path: Uri?, dnd: Boolean, importance: Int,
    notificationManager: NotificationManager
) {


    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        val existingChannel =
            notificationManager.getNotificationChannel(id)

        if (existingChannel != null) {
            notificationManager.deleteNotificationChannel(id)
        }
        val mAudioManager =
            context.getSystemService(Context.AUDIO_SERVICE) as AudioManager

        mAudioManager.setStreamVolume(
            AudioManager.STREAM_ALARM,
            mAudioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM),
            0
        )

        val channel = NotificationChannel(id, name, importance)

        channel.description = description
        channel.enableLights(true)
        channel.setShowBadge(true)
        channel.describeContents()
        channel.setBypassDnd(dnd)
        channel.lockscreenVisibility = Notification.VISIBILITY_PRIVATE
        channel.lightColor = R.color.red
        channel.enableVibration(true)

        if (id == CHANNEL_ID_NORMAL_PRIORITY) {
            if (!SharedPrefUtils.getSharedPrefIsAppInForeground(context)) {
                channel.setSound(
                    path,
                    AudioAttributes.Builder()
                        .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                        .setUsage(AudioAttributes.USAGE_ALARM)
                        .build()
                )
            }
        } else if (id == CHANNEL_ID_HIGH_PRIORITY) {

            channel.setSound(
                path,
                AudioAttributes.Builder()
                    .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                    .setUsage(AudioAttributes.USAGE_ALARM)
                    .build()
            )
        }

        notificationManager.createNotificationChannel(channel)
    }
}
AndroidConfig androidConfig = AndroidConfig.builder()
        .setTtl(3600 * 1000)
        .setPriority(AndroidConfig.Priority.HIGH)
        //.setNotification(androidNotification)
        .putData("title", title)
        .putData("body", StringEscapeUtils.unescapeJava(content))
        .putData("icon", icon)
        .putData("sound", soundData)
        .putData("channelid", channelId)
        .build();

Message msg = Message.builder()
        .setAndroidConfig(androidConfig)
        .setToken(token)
        .build();

String response = FirebaseMessaging.getInstance().send(msg);

共有1个答案

訾晋
2023-03-14

就像Micheal在评论中指出的那样,这是(不幸的)FCM在使用通知字段时的预期行为。

请参阅文档的处理消息部分。和重要的位:

这类情况下通常的解决方法是改变FCM的结构方式:

 类似资料:
  • 我正在处理FCM通知。当应用程序在后台时,我的通知工作正常,但当应用程序在前台时,我的通知无法接收。我几乎什么都试过了,但都不奏效。当应用程序处于前台时,不会收到通知。 manifest.xml: 代码(FirebaseMessagingService):

  • 我在我的react native应用程序中使用react native push notification来接收远程推送通知。一切正常,当应用程序处于前台或后台时,我会收到所有通知。 但是我希望通知仅在应用程序在后台时显示。如果应用程序在前台,它不应该显示通知。 任何帮助都将不胜感激。 我的清单文件包含以下代码:

  • 当应用程序在前台时不接收推送通知,但当应用程序在后台时接收我已遵循来自https://medium . com/@ ankushaggarwal/GCM-setup-for-Android-push-notifications-656 cf DD 8 adbd的FCM教程

  • 我正在从google firebase为我的android应用程序发送推送通知,目标是Android5.0: 我的推送通知代码是: 但为什么?这就像当应用程序在后台时,通知不使用活动代码中的设置,而只使用AndroidManifest中的某种“默认”设置。

  • 我使用FCM(Firebase Cloud Messaging)在iOS中发送推送通知。 我能够在应用程序处于前台状态时收到通知。但当应用程序处于后台状态时,不会收到通知。每当应用程序进入前台状态时,才会收到通知。 我的代码是: 当App处于后台状态时: --根本不叫。 我在应用程序功能中启用了推送通知和后台模式下的远程通知。但应用程序仍然没有收到通知。 我提到了一些问题,但没能解决这个问题。iO

  • 问题内容: 我已经在现有应用中配置了GCM,并且在那里收到了通知。现在我面临两个问题:1)我退出应用程序时未收到通知,或者应用程序在后台。2)我没有在iPhone的通知区域中收到通知,仅当我的应用程序正在运行时,我才直接在该区域接收警报消息。当我下拉通知区域时,我在xcode的控制台中收到此消息 “无法连接到GCM:操作无法完成。(com.google.gcm错误2001。)” 我的PHP文件在下