显示通知 - 启用勿扰模式

Posted

技术标签:

【中文标题】显示通知 - 启用勿扰模式【英文标题】:show notifications - Do Not Disturb mode enabled 【发布时间】:2021-08-02 10:08:00 【问题描述】:

有人知道启用静音模式后如何在设备上接收通知吗? 我正在使用 Web 服务器和 Firebase 发送通知推送,当 android 设备处于静音模式(请勿打扰)时,似乎无法收到通知。 但是,当我将智能手机置于静音模式时,我的闹钟仍在响起。 然后我们应该能够收到分类为“警报”的通知,即使在 Silence 模式中也是如此。没有?

【问题讨论】:

【参考方案1】:

在静默模式下显示通知的最佳方式是显示全屏意图

 val summaryNotification =
        NotificationCompat.Builder(
            context,
            notificationChannelId
        )
            .setSmallIcon(getSmallIconForNotification())
            .setLargeIcon(largeIcon(context))
            .setStyle(bigPicStyle)
            .setContentTitle(title)
            .setPriority(NotificationCompat.PRIORITY_HIGH)
            .setCategory(NotificationCompat.CATEGORY_ALARM)
            .addAction(
                R.drawable.ic_cancel_small,
                context.getString(R.string.dismiss),
                dismissIntent
            )
            .setAutoCancel(true)
            .setTimeoutAfter(durationInMilliSeconds!!.toLong())
            .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
            .setContentIntent(
                contentIntent(
                    context,
                    SUMMARY_NOTIFICATION_ID
                )
            )
    if (!showFull) 
        summaryNotification.setSound(sound, AudioManager.STREAM_ALARM)
    

    if (showFull) 
        summaryNotification.setFullScreenIntent(buildPendingIntent(context, i), true)
    

    notificationManager.notify(
        SUMMARY_NOTIFICATION_ID,
        summaryNotification.build()
    )

构建待定意图:

  private fun buildPendingIntent(
    context: Context,
    intent: Intent
): PendingIntent? 
    return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)

当您收到来自 firebase 的数据时,检查手机是否处于活动状态,然后发送适当的通知

 val mPowerManager = context!!.getSystemService(Context.POWER_SERVICE) as PowerManager
            if (!mPowerManager.isInteractive) 
                showFullNotification(true)
            else
                showFullNotification(false)
            

那么你必须创建一个警报活动。

在警报活动中隐藏操作栏:

 (this as AppCompatActivity?)!!.supportActionBar!!.hide()

在清单中

<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

【讨论】:

干得好!谢谢。我现在的问题是在 android 设备上激活静音模式时让我的通知响起。但我会在另一个线程中问这个问题。我标记了这个[已解决] 为了完整地播放声音,您应该在警报活动中使用 MediaPlayer。因为在某些设备中,通知声音在全屏模式下不起作用!

以上是关于显示通知 - 启用勿扰模式的主要内容,如果未能解决你的问题,请参考以下文章

如何检查“显示通知”是启用还是禁用?

有没有办法启用推送通知,以便当用户单击它时,它会将他们带到与通知显示的内容相关的页面?

提醒用户启用 ios 设置中的通知

iOS 15:为通知启用“在应用程序中配置”选项

仅在用户启用时发送通知

无法为奥利奥通知启用闪烁灯并禁用通知声音