Baseflow / flutter-permission-handler

Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions.
https://baseflow.com
MIT License
2.05k stars 858 forks source link

[Bug]: Bluetooth permission on iOS permanently denied #1333

Open lazarvgd opened 5 months ago

lazarvgd commented 5 months ago

Please check the following before submitting a new issue.

Please select affected platform(s)

Steps to reproduce

  1. add the dependency to pubspec.yaml
  2. add permission for BT in info.plist
  3. update podfile with the following code:
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
              '$(inherited)',

              ## dart: PermissionGroup.bluetooth
              'PERMISSION_BLUETOOTH=1',

            ]
  1. request permission in the code as following:
  @override
  Future<bool> getBluetoothPermission() async {
   final PermissionStatus  status = await Permission.bluetoothConnect.request();
    return status == PermissionStatus.granted;
  }

Expected results

When the bt is enabled in Settings-> -> Bluetooth, result of the code should be "granted", when it is disabled it should be some variant of denied.

Actual results

The actual result is that the code always return permanentlyDenied.

Code sample

Code sample ```dart @override Future getBluetoothPermission() async { final PermissionStatus status = await Permission.bluetoothConnect.request(); return status == PermissionStatus.granted; } ```

Screenshots or video

Screenshots or video demonstration ![image](https://github.com/Baseflow/flutter-permission-handler/assets/11629801/fbc3c3d9-c3cf-4284-bb78-13a8557fa366) ![Screenshot 2024-06-10 at 10 21 53](https://github.com/Baseflow/flutter-permission-handler/assets/11629801/bfc83611-81c8-4c19-aea8-59e156bcfa90)

Version

11.3.1

Flutter Doctor output

Doctor output ```console [✓] Flutter (Channel stable, 3.22.1, on macOS 14.5 23F79 darwin-arm64, locale en-GB) • Flutter version 3.22.1 on channel stable at /Users/lj/flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision a14f74ff3a (3 weeks ago), 2024-05-22 11:08:21 -0500 • Engine revision 55eae6864b • Dart version 3.4.1 • DevTools version 2.34.3 [✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0) • Android SDK at /Users/lj/Library/Android/sdk • Platform android-34, build-tools 34.0.0 • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java • Java version OpenJDK Runtime Environment (build 17.0.10+0-17.0.10b1087.21-11572160) • All Android licenses accepted. [✓] Xcode - develop for iOS and macOS (Xcode 15.4) • Xcode at /Applications/Xcode.app/Contents/Developer • Build 15F31d • CocoaPods version 1.15.2 [✓] Chrome - develop for the web • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome [✓] Android Studio (version 2023.3) • Android Studio at /Applications/Android Studio.app/Contents • Flutter plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/6351-dart • Java version OpenJDK Runtime Environment (build 17.0.10+0-17.0.10b1087.21-11572160) [✓] VS Code (version 1.89.1) • VS Code at /Applications/Visual Studio Code.app/Contents • Flutter extension version 3.88.0 [✓] Connected device (5 available) • SM S911B (mobile) • RFCW202MYCV • android-arm64 • Android 14 (API 34) • iPhone-J1HPW2QJMW (mobile) • 00008110-001E14E90E3A401E • ios • iOS 17.5.1 21F90 • macOS (desktop) • macos • darwin-arm64 • macOS 14.5 23F79 darwin-arm64 • Mac Designed for iPad (desktop) • mac-designed-for-ipad • darwin • macOS 14.5 23F79 darwin-arm64 • Chrome (web) • chrome • web-javascript • Google Chrome 125.0.6422.142 [✓] Network resources • All expected network resources are available. • No issues found! ```

Tested on iOS 17.5.1, iphone 14.

ritheshSalyan commented 4 months ago

I too had this issue.

The problem in my case was, that I had not run pod install after modifying podfile.

Solution: reinstall the pod.

  1. Move to ios folder cd ios
  2. Run the command pod install.

this solved my issue.

lazarvgd commented 4 months ago

The proposed solution does not work.

TimHoogstrate commented 4 months ago

Dear @lazarvgd,

Does this also happen while you test this in the Example app?

Kins regards,

tilongzs commented 4 months ago

I have encountered the same problem.Sorry, I am not good at iOS compilation and the Example app cannot be compiled successfully. Tested on iOS 16.7.7, iphone 8.

Phenek commented 4 months ago

Specific App Settings Permission

image

this bluetooth permission request returns permanentlyDenied status

      var status1 = await Permission.bluetooth.request();

In fact Permission is granted, I can scan nearby bluetooth devices!

And the example app return a 'Granted' answer:

image

It seems related to our own project...

So I tried to put the project reference in pubspec.yaml

  permission_handler:
    path: ../../flutter-permission-handler/permission_handler

I still got a permanentlyDenied status for my application, and it does not stop on breakpoint in file flutter-permission-handler/permission_handler/lib/permission_handler.dart

If you have any advice to debug this? let me know.

TimHoogstrate commented 3 months ago

I have encountered the same problem.Sorry, I am not good at iOS compilation and the Example app cannot be compiled successfully. Tested on iOS 16.7.7, iphone 8.

The example project compiles correctly.

@Phenek,

Please file a separate issue. Also check the correct plist entries and the pod file entries. Then run flutter build ios.

Kind regards,

fufylev commented 3 months ago

same issue for me - spent already many hrs on this but still fail to solve the issue. A always get Permission.denied when in fact on the devise the permission is granted.

Any updates on this? Flutter 3.22.2 iOS 17.6

TimHoogstrate commented 3 months ago

Dear @fufylev,

Please file a separate issue. And follow the instructions in the README. You probably forgot to update the podfile or the plist entries.

Kind regards,

Hoai-Phong commented 2 months ago

@fufylev
When I have granted permission on the app, why does it still show as permanentlyDenied? Is there any way to fix it? image

image

permission_handler: ^11.3.1

Phenek commented 2 months ago

@TimHoogstrate Sorry, but why do I need to file a separate issue? This issue is what it is. No need to duplicate, don't you think?

My issue is exactly the title of this one. Bluetooth permission on iOS permanently denied, even when in fact on the devise the permission is granted.

So I tried to put the project as code reference in pubspec.yaml

  permission_handler:
    path: ../../flutter-permission-handler/permission_handler

but I could not debug, because breakpoints don't stop on my Visual Studio Code. I don't why? Can you please, share you debug advice @TimHoogstrate

sahharYoucef commented 1 month ago

Same issue on ios18 , flutter 3.22.2 with notifications permission

djamel96 commented 1 month ago

I'm facing the same issue !