Flutter:如何修复ITMS-90809:不推荐使用的API-Apple将停止接受使用UIWebView API的应用程序的提交

时间:2019-08-28 23:01:18

标签: ios flutter uiwebview

在提交我的最新版本时,Apple突然返回一条消息,指出存在问题,具体是:

  

ITMS-90809:不推荐使用的API-Apple将停止接受使用UIWebView API的应用程序的提交。有关更多信息,请参见https://developer.apple.com/documentation/uikit/uiwebview

由于我没有使用Webview插件,所以我对使用UIWebView API的位置一无所知。有关如何解决此问题的任何建议?

使用最新的稳定flutter版本1.7.8 + hotfix.4并包含以下软件包,将出现此错误:

http: ^0.12.0
shared_preferences: ^0.4.3
intl: any
permission_handler: ^2.1.2
contacts_service: ^0.2.8
image: ^2.0.5
cached_network_image: ^1.0.0
url_launcher: ^5.0.1
path_provider: ^0.5.0+1
after_layout: ^1.0.7
connectivity: ^0.4.3+1
device_info: ^0.4.0+2
firebase_auth: ^0.11.1+7
firebase_messaging: ^5.1.2
firebase_analytics: ^5.0.0
notification_permissions: ^0.4.0

所有软件包都已更新为最新版本。

flutter doctor的输出是:

[✓] Flutter (Channel stable, v1.7.8+hotfix.4, on Mac OS X 10.14.6 18G87, locale en-US)
    • Flutter version 1.7.8+hotfix.4 at /Users/per/flutter
    • Framework revision 20e59316b8 (6 weeks ago), 2019-07-18 20:04:33 -0700
    • Engine revision fee001c93f
    • Dart version 2.4.0

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/per/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 10.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 10.3, Build version 10G8
    • CocoaPods version 1.7.4

[✓] iOS tools - develop for iOS devices
    • ios-deploy 1.9.4

[✓] Android Studio (version 3.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 31.3.1
    • Dart plugin version 181.5656
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)

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

[✓] Connected device (1 available)
    • Nexus 6P • 5VT7N15C31001152 • android-arm64 • Android 8.1.0 (API 27)

• No issues found!

5 个答案:

答案 0 :(得分:20)

我认为它是通过firebase_auth插件使用的。 尝试将其更新到最新版本,然后记住运行 pod update

答案 1 :(得分:7)

我在Cordova应用程序中拥有此功能,并通过更新依赖项对其进行了修复。

您是否有机会使用该依赖项或其他依赖项,而正在使用依赖项“ cordova-plugin-inappbrowser”。

如果是这样,应该在3.1.0中修复。请参阅发行说明https://github.com/apache/cordova-plugin-inappbrowser/blob/master/RELEASENOTES.md 而PR修复它https://github.com/apache/cordova-plugin-inappbrowser/pull/271

更新:尚未修复。请参阅cordova-ios上的问题:https://github.com/apache/cordova-ios/issues/661 请注意:没有截止日期,我已经联系了一个苹果开发人员,该开发人员一直在发推文,准备转移到WKWebView,以查看他是否可以提供更多信息,如果得到回复,将会更新。

更新:Cordova-ios 5.1.0似乎可以解决此问题。参见https://github.com/apache/cordova-ios/pull/715

答案 2 :(得分:2)

由于这已成为Google拒绝消息的“答案”,因此我将添加一个React Native修复程序。

在React Native上,考虑到您一直是优秀的开发人员,并且没有在自己的代码中使用UIWebView,请使用以下命令找出您的哪些依赖项仍在使用UIWebView:

grep -r UIWebView node_modules/*

here还有更多信息。

答案 3 :(得分:2)

就我而言,问题是我在调试中使用的Flutter的Facebook插件版本

我必须将版本更改为:

flutter_facebook_login: ^2.0.1

收件人:

flutter_facebook_login: ^3.0.0

还必须从以下位置更改Pod文件:

pod 'FBSDKCoreKit', '~> 4.39.1'
pod 'FBSDKLoginKit', '~> 4.39.1'

收件人:

pod 'FBSDKCoreKit', '~> 5.5'
pod 'FBSDKLoginKit', '~> 5.5'

然后这个函数的调用又出现了另一个问题

fbLogin.logInWithReadPermissions(['email']);

仅替换为

fbLogin.logIn(['email']);

然后重建所有内容,然后再次上传。

答案 4 :(得分:-2)

即使我未在我的应用程序中使用firebase_auth,但仍在从FirebaseAuth的Xcode搜索中找到对UIWEBVIEW的引用。似乎Pods默认包含此功能。所以这对我有用:

  1. 在Xcode中打开项目
  2. 打开Pods文件夹,您可能会看到很多子文件夹(程序包)
  3. 右键单击FirebaseAuth文件夹,然后选择“删除”
  4. 然后选择“删除引用”而不是“移至垃圾箱”
  5. 构建项目
  6. UIWEBVIEW引用应该消失