Reputation: 7985
In Flutter, I am not able to ask the user for motion and fitness permission in iOS platform. I am using this library for permission handling and I am using following code
Permission.activityRecognition.request()
// Android
// Asks for permission
// iOS
// No prompt
Upvotes: 2
Views: 2855
Reputation: 146
First copy and past below code into your podfile. Than set 'PERMISSION_SENSORS=1', if you dont want use another permission you can delete or set it =0 (exp 'PERMISSION_CAMERA=0', ).
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
# You can remove unused permissions here
# e.g. when you don't need camera permission, just add 'PERMISSION_CAMERA=0'
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
'$(inherited)',
## dart: PermissionGroup.calendar
## dart: PermissionGroup.reminders
## dart: PermissionGroup.contacts
## dart: PermissionGroup.camera
'PERMISSION_CAMERA=1',
## dart: PermissionGroup.microphone
'PERMISSION_MICROPHONE=1',
## dart: PermissionGroup.speech
'PERMISSION_SPEECH_RECOGNIZER=1',
## dart: PermissionGroup.photos
'PERMISSION_PHOTOS=1',
## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
## dart: PermissionGroup.notification
## dart: PermissionGroup.mediaLibrary
'PERMISSION_MEDIA_LIBRARY=1',
## dart: PermissionGroup.sensors
## dart: PermissionGroup.bluetooth
## dart: PermissionGroup.appTrackingTransparency
'PERMISSION_APP_TRACKING_TRANSPARENCY=1',
## dart: PermissionGroup.criticalAlerts
'PERMISSION_SENSORS=1'
]
end
end
end
Than add this into Info.plist file
<key>NSMotionUsageDescription</key>
<string>This application tracks your steps</string>
Finally use permission_handler plugin into your project and add this code where you want to ask permission.
Permission.sensors.request().then((value) => print(value));
Upvotes: 1
Reputation: 7985
The workaround I found was to use Permission.sensors
instead of Permission.activityRecognition
for iOS platform. The code goes like this:-
Permission getMotionPermission() {
if(Platform.isAndroid /** Also check if SDK >= 29 **/){
return Permission.activityRecognition;
} else if(Platform.isIOS) {
return Permission.sensors;
}
}
// ask for permission
Permission motionPermission = getMotionPermission();
motionPermission?.request();
Upvotes: 2