skip to Main Content

i’m implementing a youtube player in my flutter app and when i run it the build will fail and it throws deprication error.

i’m currently using macbook mid 2012, so i can not use latest version of x code. my current version is at Version 12.4 . so in order to use flutter for ios i’m using flutter 2.5.

so now when i try to use youtube player it doesn’t build the app.

Xcode build done.                                           43.0s
Failed to build iOS app
Error output from Xcode build:
↳
    ** BUILD FAILED **


Xcode's output:
↳
    /Users/mobix/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.5.0+2/ios/
    Classes/InAppBrowser/InAppBrowserWebViewController.swift:562:13: warning: setter for 'statusBarStyle'
    was deprecated in iOS 9.0: Use -[UIViewController preferredStatusBarStyle]
                UIApplication.shared.statusBarStyle = UIStatusBarStyle(rawValue: previousStatusBarStyle)!
                ^
    /Users/mobix/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.5.0+2/ios/
    Classes/InAppWebView/InAppWebView.swift:521:31: warning: 'mediaPlaybackRequiresUserAction' was
    deprecated in iOS 9.0
                    configuration.mediaPlaybackRequiresUserAction =
                    options.mediaPlaybackRequiresUserGesture
                                  ^
    /Users/mobix/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.5.0+2/ios/
    Classes/InAppWebView/InAppWebView.swift:932:31: warning: 'mediaPlaybackRequiresUserAction' was
    deprecated in iOS 9.0
                    configuration.mediaPlaybackRequiresUserAction =
                    newOptions.mediaPlaybackRequiresUserGesture
                                  ^
    /Users/mobix/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.5.0+2/ios/
    Classes/InAppWebView/InAppWebViewOptions.swift:103:81: warning: 'mediaPlaybackRequiresUserAction' was
    deprecated in iOS 9.0
                    realOptions["mediaPlaybackRequiresUserGesture"] =
                    configuration.mediaPlaybackRequiresUserAction
                                                                                    ^
    /Users/mobix/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.5.0+2/ios/
    Classes/MyCookieManager.swift:260:44: error: cannot call value of non-function type 'String?'
                            domain = domainUrl.host()
                                               ^   ~~

    /Users/mobix/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.5.0+2/ios/
    Classes/MyCookieManager.swift:294:44: error: cannot call value of non-function type 'String?'
                            domain = domainUrl.host()
                                               ^   ~~

    /Users/mobix/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.5.0+2/ios/
    Classes/Types/URLCredential.swift:14:25: warning: comparing non-optional value of type '[Any]' to
    'nil' always returns true
            if certificates != nil {
               ~~~~~~~~~~~~ ^  ~~~
    /Users/mobix/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.5.0+2/ios/
    Classes/Util.swift:216:21: warning: immutable value 'j' was never used; consider replacing with '_'
    or removing it
                    for j in ipv6.count...8 {
                        ^
                        _
    /Users/mobix/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.5.0+2/ios/
    Classes/InAppBrowser/InAppBrowserWebViewController.swift:562:13: warning: setter for 'statusBarStyle'
    was deprecated in iOS 9.0: Use -[UIViewController preferredStatusBarStyle]
                UIApplication.shared.statusBarStyle = UIStatusBarStyle(rawValue: previousStatusBarStyle)!
                ^
    /Users/mobix/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.5.0+2/ios/
    Classes/InAppWebView/InAppWebView.swift:521:31: warning: 'mediaPlaybackRequiresUserAction' was
    deprecated in iOS 9.0
                    configuration.mediaPlaybackRequiresUserAction =
                    options.mediaPlaybackRequiresUserGesture
                                  ^
    /Users/mobix/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.5.0+2/ios/
    Classes/InAppWebView/InAppWebView.swift:932:31: warning: 'mediaPlaybackRequiresUserAction' was
    deprecated in iOS 9.0
                    configuration.mediaPlaybackRequiresUserAction =
                    newOptions.mediaPlaybackRequiresUserGesture
                                  ^
    /Users/mobix/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.5.0+2/ios/
    Classes/InAppWebView/InAppWebViewOptions.swift:103:81: warning: 'mediaPlaybackRequiresUserAction' was
    deprecated in iOS 9.0
                    realOptions["mediaPlaybackRequiresUserGesture"] =
                    configuration.mediaPlaybackRequiresUserAction
                                                                                    ^
    /Users/mobix/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.5.0+2/ios/
    Classes/MyCookieManager.swift:260:44: error: cannot call value of non-function type 'String?'
                            domain = domainUrl.host()
                                               ^   ~~

    /Users/mobix/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.5.0+2/ios/
    Classes/MyCookieManager.swift:294:44: error: cannot call value of non-function type 'String?'
                            domain = domainUrl.host()
                                               ^   ~~

    /Users/mobix/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.5.0+2/ios/
    Classes/Types/URLCredential.swift:14:25: warning: comparing non-optional value of type '[Any]' to
    'nil' always returns true
            if certificates != nil {
               ~~~~~~~~~~~~ ^  ~~~
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    note: Using new build system
    note: Building targets in parallel
    note: Planning build
    note: Constructing build description
    warning: Capabilities for Signing & Capabilities may not function correctly because its entitlements
    use a placeholder team ID. To resolve this, select a development team in the Runner editor. (in
    target 'Runner' from project 'Runner')

Could not build the application for the simulator.
Error launching application on iPhone 12 Pro Max.

the package i’m using is youtube_player_flutter: ^8.0.0. the message indicates to in app web view.

if #available(iOS 10.0, *) {
                configuration.ignoresViewportScaleLimits = options.ignoresViewportScaleLimits
                
                var dataDetectorTypes = WKDataDetectorTypes.init(rawValue: 0)
                for type in options.dataDetectorTypes {
                    let dataDetectorType = Util.getDataDetectorType(type: type)
                    dataDetectorTypes = WKDataDetectorTypes(rawValue: dataDetectorTypes.rawValue | dataDetectorType.rawValue)
                }
                configuration.dataDetectorTypes = dataDetectorTypes
                
                configuration.mediaTypesRequiringUserActionForPlayback = options.mediaPlaybackRequiresUserGesture ? .all : []
            } else {
                // Fallback on earlier versions
                configuration.mediaPlaybackRequiresUserAction = options.mediaPlaybackRequiresUserGesture
            }

and in app web view options

if #available(iOS 10.0, *) {
                realOptions["mediaPlaybackRequiresUserGesture"] = configuration.mediaTypesRequiringUserActionForPlayback == .all
                realOptions["ignoresViewportScaleLimits"] = configuration.ignoresViewportScaleLimits
                realOptions["dataDetectorTypes"] = Util.getDataDetectorTypeString(type: configuration.dataDetectorTypes)
            } else {
                realOptions["mediaPlaybackRequiresUserGesture"] = configuration.mediaPlaybackRequiresUserAction
            }

i uncommented the platform: ios, '9.0' and replace at the end with

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
    end
  end
end

replacing these worked the other error (which is not included in this question) but it doesn’t seem to work for these. how can i fix this? i haven’t used xcode before so.

my flutter doctor

[✓] Flutter (Channel stable, 2.5.3, on Mac OS X 10.15.7 19H15 darwin-x64, locale en-ET)
    • Flutter version 2.5.3 at /Users/mobix/Development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 18116933e7 (1 year ago), 2021-10-15 10:46:35 -0700
    • Engine revision d3ea636dc5
    • Dart version 2.14.4

[✓] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
    • Android SDK at /Users/mobix/Library/Android/sdk
    • Platform android-32, build-tools 32.1.0-rc1
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2020.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 11.0.10+0-b96-7281165)

[✓] VS Code (version 1.72.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.50.0

[✓] Connected device (2 available)
    • iPhone 12 Pro Max (mobile) • 63C29DC5-CD5A-411A-9BAA-C55FA3ED65B3 • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-14-4 (simulator)
    • Chrome (web)               • chrome                               • web-javascript • Google Chrome
      106.0.5249.119

• No issues found!

thanks in advance

3

Answers


  1. You just need to update your xcode version to 14 and that’s all 🙂

    https://github.com/pichillilorenzo/flutter_inappwebview/issues/1369

    Here is the reference.

    Login or Signup to reply.
  2. I’m facing this issue since last 2 days.

    You don’t need to download the X-code-14 version.

    just open X-code and run the project it’s showing an error then click on the
    error and tap fix.

    Login or Signup to reply.
  3. If you cannot have update the Xcode just replace every part of code inside ios/Classes/MyCookieManager.swift:

    if #available(iOS 16.0, *) {
      domain = domainUrl.host()
    } else {
      domain = domainUrl.host
    }
    

    with

    domain = domainUrl.host
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search