Flutter 请求权限通知

7

我正在尝试展示一个弹出窗口来请求通知权限。我已经尝试使用permission_handler库,但对于通知和蓝牙,它将不会显示对话框。是否有其他方法展示对话框以请求通知权限?


我知道这并没有帮助,但是我在Android 13上遇到了同样的问题。你找到解决方案了吗? - Tomasz Cz.
嗨@TomaszCz。我还没有找到我的问题的解决方案,一直在寻找中。 - wahyu
1
我今天刚尝试了@Abdelrahman Tareq的解决方案,它有效了,但是对于弹出通知,我们需要手动完成。 - wahyu
3个回答

4
通过使用 permission_handler 包,以下代码将弹出一个对话框来请求用户的通知权限:
Future<void> requestNotificationPermissions() async {
   final PermissionStatus status = await Permission.notification.request();
   if (status.isGranted) {
      // Notification permissions granted
   } else if (status.isDenied) {
      // Notification permissions denied
   } else if (status.isPermanentlyDenied) {
      // Notification permissions permanently denied, open app settings
      await openAppSettings();
   }
}

你可以在主函数内或任何合适的位置调用该函数。

非常感谢在最新的库更新后,一切都像魔法般地正常运行。 - undefined

2

1
嗨,我今天刚试了一下,目前看起来运行良好,非常感谢@Abdelrahman Tareq的帮助。 - wahyu
你好,我的朋友。 - Abdelrahman Tareq

0
我遇到了同样的问题,弹窗没有显示出来。这是我的解决方案:
  • iOS:

Podfile中,我将需要使用的权限的值从0改为1。例如:

...
post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    # YOUR CUSTOM TARGET CODE HERE.
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
        '$(inherited)',
        ## dart: PermissionGroup.calendar
        'PERMISSION_EVENTS=0',
   
        ## dart: PermissionGroup.notification
        'PERMISSION_NOTIFICATIONS=1',

        ## dart: PermissionGroup.bluetooth
        'PERMISSION_BLUETOOTH=1',
      ]
    end
  end
end
  • Android:

android -> app -> build.gradle中,我将targetSdkVersion设置为33。例如:

...
android {
    ...

    defaultConfig {
        ...
        minSdkVersion 21 // flutter.minSdkVersion
        targetSdkVersion 33 // flutter.targetSdkVersion
        ...
    }

    ...
}
...

希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接