Skip to content

iOS Not Working after upgrading to flutter 1.20.1 #365

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
1 of 2 tasks
lucaspizzo opened this issue Aug 12, 2020 · 7 comments · Fixed by #516
Closed
1 of 2 tasks

iOS Not Working after upgrading to flutter 1.20.1 #365

lucaspizzo opened this issue Aug 12, 2020 · 7 comments · Fixed by #516

Comments

@lucaspizzo
Copy link

lucaspizzo commented Aug 12, 2020

🐛 Bug Report

I recently upgrade to flutter 1.20.1 and when i send my app to itunesconnect i got this message:

Dear Developer,

We identified one or more issues with a recent delivery for your app, "MY APP NAME" 7.8.0 (140). Please correct the following issues, then upload again.

ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSContactsUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSCalendarsUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSAppleMusicUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSMotionUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSSpeechRecognitionUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

Best regards,

The App Store Team

Expected behavior

It should work without this apple message, i can't update my app anymore.

Reproduction steps

Just Send your app to Itunes Connect

Configuration

Version: 1.x

Platform:

  • 📱 iOS
  • 🤖 Android
@noark9
Copy link

noark9 commented Aug 17, 2020

Check for the setup part of the README.md file. Following setup guide under the iOS section, you should add permission config in your Podfile.

@maxmblack
Copy link

Thats because Flutter changed the structure of the podfile on v1.20.
The steps from the current setup guide dont work anymore for the new podfile structure as far as I know

@MisterJimson
Copy link

Also running into this. Anyone have a workaround so far?

@filipperodrigues
Copy link

Has anyone managed to solve it? I'm having trouble with the following permission: NSPhotoLibraryUsageDescription

@MisterJimson
Copy link

After re adding the changes required to the podfile as noted in the readme, I am no longer having this issue.

@guominfang
Copy link

@MisterJimson
Hi. Can you share your podfile

@MisterJimson
Copy link

# Uncomment this line to define a global platform for your project
platform :ios, '11.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

project 'Runner', {
  'Debug' => :debug,
  'Profile' => :release,
  'Release' => :release,
}

def flutter_root
  generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
  unless File.exist?(generated_xcode_build_settings_path)
    raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
  end

  File.foreach(generated_xcode_build_settings_path) do |line|
    matches = line.match(/FLUTTER_ROOT\=(.*)/)
    return matches[1].strip if matches
  end
  raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end

require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)

flutter_ios_podfile_setup

target 'Runner' do
  use_frameworks!
  use_modular_headers!

  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end

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
         # for more infomation: https://github.com/BaseflowIT/flutter-permission-handler/blob/develop/permission_handler/ios/Classes/PermissionHandlerEnums.h
         # e.g. when you don't need camera permission, just add 'PERMISSION_CAMERA=0'
         config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
           '$(inherited)',

           ## dart: PermissionGroup.calendar
           'PERMISSION_EVENTS=0',

           ## dart: PermissionGroup.reminders
           'PERMISSION_REMINDERS=0',

           ## dart: PermissionGroup.contacts
           'PERMISSION_CONTACTS=0',

           ## dart: PermissionGroup.camera
           # 'PERMISSION_CAMERA=0',

           ## dart: PermissionGroup.microphone
           # 'PERMISSION_MICROPHONE=0',

           ## dart: PermissionGroup.speech
           'PERMISSION_SPEECH_RECOGNIZER=0',

           ## dart: PermissionGroup.photos
           # 'PERMISSION_PHOTOS=0',

           ## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
           # 'PERMISSION_LOCATION=0',

           ## dart: PermissionGroup.notification
           'PERMISSION_NOTIFICATIONS=0',

           ## dart: PermissionGroup.mediaLibrary
           'PERMISSION_MEDIA_LIBRARY=0',

           ## dart: PermissionGroup.sensors
           'PERMISSION_SENSORS=0'
         ]
    end
  end
end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants