将 targetSdkVersion 从 30 更改为 33,现在通知不会出现

changed targetSdkVersion to 33 from 30 and now notifications are not coming up

提问人:BRDroid 提问时间:10/26/2022 更新时间:1/15/2023 访问量:4873

问:

我将 targetSdkVersion 从 30 更新到 33,并且在设备上安装应用程序时不显示通知弹出窗口

当 targetSdkVersion 为 30 时,当我安装应用程序时,会出现以下弹出窗口,当我单击允许时,我确实会收到通知

enter image description here

当 targetSdkVersion 为 33 时,安装应用时没有弹出以下弹出窗口。 我查看了 https://developer.android.com/develop/ui/views/notifications/notification-permission 并添加了清单文件。 我仍然没有收到任何提示,要求允许通知。<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>

我有代码可以检查通知是否已启用,并且它返回 null,因为没有显示任何提示。

private fun isNotificationsEnabled(): Boolean {
    return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        val manager = oApp.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
        if (!manager.areNotificationsEnabled()) {
            return false
        }
        val channels = manager.notificationChannels
        for (channel in channels) {
            if (channel.importance == NotificationManager.IMPORTANCE_NONE) {
                return false
            }
        }
        true
    } else {
        NotificationManagerCompat.from(oApp).areNotificationsEnabled()
    }
}

我怎样才能强制提示或我需要做什么,以便用户在首次安装时收到此提示

提前致谢 R

Android Kotlin 推送通知 android-manifest android-permissions

评论


答:

0赞 Tenfour04 10/26/2022 #1

此处的文档所示,新权限被归类为危险权限,这意味着您必须在运行时手动向用户请求权限。此处的文档中介绍了向用户请求危险权限的过程。危险权限的最佳做法指出,在用户请求需要权限的行为之前,不应请求权限。POST_NOTIFICATIONS

评论

0赞 BRDroid 10/26/2022
由于这些是登录后立即发出的通知,因此我们将需要此权限,以便我们可以发送推送通知。登录应用程序后可以请求吗
0赞 Tenfour04 10/26/2022
我觉得没关系。他们只在“最佳实践”下做出该指令,所以我认为他们不会强制执行它,无论如何,如果你的应用程序需要从一开始就使用某些东西,我认为你无论如何都不会违反它的建议。但这只是我的解释。我不能保证谷歌会如何对待它。