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

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

【问题讨论】:

    标签: android push-notification do-not-disturb


    【解决方案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。因为在某些设备中,通知声音在全屏模式下不起作用!
    猜你喜欢
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多