mapsplugin / cordova-plugin-googlemaps

Google Maps plugin for Cordova
Apache License 2.0
1.66k stars 912 forks source link

ITMS-90809: Deprecated API Usage #2684

Closed adirgan1 closed 4 years ago

adirgan1 commented 4 years ago

I'm submitting a ... (check one with "x")

OS: (check one with "x")

cordova information: (run $> cordova plugin list)

insert the output from the command here

at.gofg.sportscomputer.powermanagement 1.1.2 "PowerManagement" cordova-custom-config 5.1.0 "cordova-custom-config" cordova-plugin-add-swift-support 2.0.2 "AddSwiftSupport" cordova-plugin-background-fetch 5.6.0 "CDVBackgroundFetch" cordova-plugin-background-mode 0.7.3 "BackgroundMode" cordova-plugin-background-mode-bluetooth-central 1.0.0 "Bluetooth Central Background Mode" cordova-plugin-background-mode-bluetooth-peripheral 1.0.0 "Bluetooth Peripheral Background Mode" cordova-plugin-badge 0.8.8 "Badge" cordova-plugin-bluetooth-peripheral-usage-description 1.0.0 "Bluetooth Peripheral Usage Description" cordova-plugin-bluetoothle 4.5.5 "Bluetooth LE" cordova-plugin-contacts 3.0.1 "Contacts" cordova-plugin-device 2.0.3 "Device" cordova-plugin-file 6.0.2 "File" cordova-plugin-file-transfer 1.7.1 "File Transfer" cordova-plugin-fingerprint-aio 2.0.0 "FingerprintAllInOne" cordova-plugin-googlemaps 2.6.3-20190808-1526 "cordova-plugin-googlemaps" cordova-plugin-inappbrowser 3.1.0 "InAppBrowser" cordova-plugin-ionic-keyboard 2.1.3 "cordova-plugin-ionic-keyboard" cordova-plugin-ionic-webview 4.1.1 "cordova-plugin-ionic-webview" cordova-plugin-nativestorage 2.3.2 "NativeStorage" cordova-plugin-screen-orientation 3.0.2 "Screen Orientation" cordova-plugin-splashscreen 5.0.2 "Splashscreen" cordova-plugin-statusbar 2.4.2 "StatusBar" cordova-plugin-taptic-engine 2.1.0 "Taptic Engine" cordova-plugin-timer 1.0.1 "Native timer" cordova-plugin-vibration 3.1.1 "Vibration" cordova-plugin-whitelist 1.3.3 "Whitelist" cordova-sqlite-storage 3.2.1 "Cordova sqlite storage plugin - cordova-sqlite-storage plugin version" cordova.plugins.diagnostic 5.0.0 "Diagnostic" es6-promise-plugin 4.2.2 "Promise" mx.ferreyra.callnumber 0.0.2 "Cordova Call Number Plugin" onesignal-cordova-plugin 2.5.2 "OneSignal Push Notifications"

If you use @ionic-native/google-maps, please tell the package.json (only @ionic-native/core and @ionic-native/google-maps are fine mostly)

@ionic-native/core : ^5.13.0
@ionic-native/google-maps : ^5.5.0

"cordova-plugin-googlemaps": "git+https://github.com/mapsplugin/cordova-plugin-googlemaps.git#multiple_maps",

Current behavior:

The UIWebView is deprecated, and I look in the repository of https://github.com/mapsplugin/cordova-plugin-googlemaps.git#multiple_maps and have references to UIWebView, you have to remove those references to avoid problems with AppStor

Expected behavior:

When uploading the Build to AppStore Connect you should not display the UIWebView Usage Warning

Related code, data or error log (please format your code or data):

    Dear Developer,

We identified one or more issues with a recent delivery for your app, "App" 1.0.3 (1.0.3). Your delivery was successful, but you may wish to correct the following issues in your next delivery:ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs . See https://developer.apple.com/documentation/uikit/uiwebview for more information.After you’ve corrected the issues, you can use Xcode or Application Loader to upload a new binary to App Store Connect.Best regards,The App Store Team

Please share your project files on Github or others(Bitbucket, Gitlabs...etc).
If you don't want to share your project files, please create a demo project, then share it.

Screen captures, and/or native logs(such as Logcat, xcode logs) are appreciate.

Giving much information, you are waiting time is less.
Thank you for your cooperation.

Support this plugin activity

I appreicate if you give me a beer :beer: from here

mcastets commented 4 years ago

This not related to this plugin. See also this post: https://ionicframework.com/blog/understanding-itms-90809-uiwebview-api-deprecation/

wf9a5m75 commented 4 years ago

@adirgan1 This plugin works with both UIWebView and WKWebView at this time. But choosing which one is depends on your cordova-ios version.

In order to support both, this plugin uses reflection (kind of like pointer technique), it means this plugin does not include UIWebView code itself. I think the warning coming from other plugin.

adirgan1 commented 4 years ago

Perfect, I close the problem for the successful answer

tlacroix commented 4 years ago

Question: in which version were the UIWebView references removed? I'm updating an old codebase, having this info would help me a lot. Thanks!

wf9a5m75 commented 4 years ago

Please use v2.7.1 or the code of he multiple_maps branch

tlacroix commented 4 years ago

Please use v2.7.1 or the code of he multiple_maps branch

I upgraded (and deleted the platform and reinstalled it). I'm pretty familiar with this kind of upgrades (so cordova-ios 5.1.1 + the flags in confix.xml + all the fixed versions of the plugins I use [cordova-plugin-ionic-webview + cordova-plugin-facebook4], and this one was the only one specific to this project).

I'm still getting rejected for ITMS-90809 ...

I grepped -r my platforms/ios directory, and the only thing that seems odd is that the ./com.googlemaps.ios/Maps/Frameworks/GoogleMaps.framework/GoogleMaps binary file matches.

Not sure why, as there's no version specified anywhere (as far as I know). And it's not in the platforms/ios/Podfile.

--

UPDATE #1:

I ran pod repo-update in platforms/ios/, and reran pod setup in project root to no avail.

wf9a5m75 commented 4 years ago

This plugin goes back to com.googlemaps.ios instead of cocoa pod, because many people fails to use cocoapod.

$ cordova platform rm ios
$ cordova plugin rm cordova-plugin-googlemaps
$ npm uninstall cordova-plugin-googlemaps

$ cordova plugin list
(confirm you uninstall the plugin completely)

$ cordova plugin add github.com/mapsplugin/cordova-plugin-googlemaps#multiple_maps

Even if does not work, please share your project files on github (and please create new issue instead of closed issue thread)

tlacroix commented 4 years ago

@wf9a5m75 Thanks a bunch for your willingness to help. I'm pretty sure now it's not specifically related to this plugin (although I still don't know where it comes from), but I'll update this issue with my findings just in case it could help anyone else. And if it has something to do with this plugin, I'll create another reply and tag you if it's minor, or another issue if it's major. Thanks again!

P.S.: I did the platform + plugin rm and add with specific version numbers at the start of the process. Like I said, not my first ITMS-90809 upgrade rodeo ;-) -- my sixth actually

tlacroix commented 4 years ago

@wf9a5m75 Ok, this is somehow related to this plugin. I tried many many things to no avail.

Then, I just I removed this plugin, and it passed ITMS-90809. I'm puzzled. In part because I couldn't find any reference to UIWebView in 2.7.1. Added it again, not passing. Really scratching my brain. If you have any idea, please let me know.

You'll find the info you asked for below.

List of platforms and plugins with a similar app that is passing 👍 ITMS-90809:

Installed platforms:
  android 6.4.0
  browser 5.0.3
  ios 5.1.1
Installed plugins:
cordova-plugin-actionsheet 2.3.3 "ActionSheet"
cordova-plugin-app-version 0.1.9 "AppVersion"
cordova-plugin-background-geolocation 3.1.0 "CDVBackgroundGeolocation"
cordova-plugin-camera 2.4.1 "Camera"
cordova-plugin-device 2.0.3 "Device"
cordova-plugin-facebook4 6.4.0 "Facebook Connect"
cordova-plugin-file 6.0.2 "File" --- difference here
cordova-plugin-geolocation 4.0.2 "Geolocation"
cordova-plugin-globalization 1.0.9 "Globalization" --- difference here
cordova-plugin-ionic-keyboard 2.2.0 "cordova-plugin-ionic-keyboard"
cordova-plugin-ionic-webview 1.2.1 "cordova-plugin-ionic-webview"
cordova-plugin-ios-non-exempt-encryption 1.0.0 "ITSAppUsesNonExemptEncryption false"
cordova-plugin-localization-strings 2.0.0 "Localization"
cordova-plugin-media-capture 3.0.2 "Capture"
cordova-plugin-statusbar 2.4.1 "StatusBar"
cordova-plugin-whitelist 1.3.2 "Whitelist"
cordova-support-google-services 1.3.2 "cordova-support-google-services"
cordova.plugins.diagnostic 5.0.1 "Diagnostic"
ionic-plugin-deeplinks 1.0.15 "Ionic Deeplink Plugin"
phonegap-plugin-multidex 1.0.0 "Multidex"
phonegap-plugin-push 2.3.0 "PushPlugin"
cordova-plugin-nativepagetransitions 0.6.6 "Native Page Transitions"
cordova-plugin-network-information 1.3.4 "Network Information"
cordova-plugin-splashscreen 5.0.2 "Splashscreen"
cordova-plugin-taptic-engine 2.1.0 "Taptic Engine"
cordova-plugin-webviewcolor 2.0.0 "WebView background color plugin"
cordova-plugin-x-toast 2.6.0 "Toast"
cordova-sqlite-ext 0.10.7 "Cordova sqlite storage plugin with extra features"
es6-promise-plugin 4.1.0 "Promise"
phonegap-plugin-mobile-accessibility 1.0.5-dev "Mobile Accessibility"

List of platforms and plugins with this app is passing not 👎 passing ITMS-90809:

Installed platforms:
  android 6.4.0
  browser 5.0.3
  ios 5.1.1
com.googlemaps.ios 2.6.0 "Google Maps SDK for iOS" --- difference here
cordova-plugin-actionsheet 2.3.3 "ActionSheet"
cordova-plugin-app-version 0.1.9 "AppVersion"
cordova-plugin-background-geolocation 3.1.0 "CDVBackgroundGeolocation"
cordova-plugin-camera 4.0.2 "Camera"
cordova-plugin-contacts 3.0.1 "Contacts"
cordova-plugin-device 2.0.3 "Device"
cordova-plugin-facebook4 6.4.0 "Facebook Connect"
cordova-plugin-file 6.0.1 "File"
cordova-plugin-geolocation 4.0.2 "Geolocation"
cordova-plugin-globalization 1.11.0 "Globalization"
cordova-plugin-googlemaps 2.7.1 "cordova-plugin-googlemaps" --- not present in the working version of the same project above, that's the only difference
cordova-plugin-ionic-keyboard 2.2.0 "cordova-plugin-ionic-keyboard"
cordova-plugin-ionic-webview 1.2.1 "cordova-plugin-ionic-webview"
cordova-plugin-ios-non-exempt-encryption 1.0.0 "ITSAppUsesNonExemptEncryption false"
cordova-plugin-localization-strings 2.0.0 "Localization"
cordova-plugin-media-capture 3.0.2 "Capture" | g
cordova-plugin-spinner-dialog 1.3.1 "SpinnerDialog"
cordova-plugin-statusbar 2.4.1 "StatusBar"
cordova-plugin-whitelist 1.3.3 "Whitelist"
cordova-support-google-services 1.4.1 "cordova-support-google-services"
cordova.plugins.diagnostic 5.0.1 "Diagnostic"
ionic-plugin-deeplinks 1.0.15 "Ionic Deeplink Plugin"
phonegap-plugin-multidex 1.0.0 "Multidex"
phonegap-plugin-push 2.3.0 "PushPlugin"

And with the config just above, after running npm run cordova plugin rm cordova-plugin-googlemaps* and building and pushing to the iTunesStore = no ITMS-90809 notice, app is available on TestFlight within 10 minutes.

** The npm run cordova part is because each of my cordova environment run the cordova tool localy. They both run the same version, which is 7.1.0.

The only command I ran between Itunes accepted (after the plugin rm) and the Itunes refused becaused of ITMS-90809 is npm run cordova plugin add cordova-plugin-googlemaps@2.7.1 (and npm run cordova prepare ios and then archive and upload in Xcode as usual).

Really scratching my head on this one.

tlacroix commented 4 years ago

@wf9a5m75 Let me know if you have any idea about what it could be or new things to try; If not I'll open a new bug end of day (Eastern Time) tomorrow with all the info above.

Sadly, this app update can't go live without this plugin or an equivalent, and I don't know of any equivalent.

wf9a5m75 commented 4 years ago

I think this com.googlemaps.ios 2.6.0 is old

wf9a5m75 commented 4 years ago

By the way, did you see this comment?

https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/2684#issuecomment-534172542

tlacroix commented 4 years ago

@wf9a5m75 Yes, I did look at the guide. And you were correct, I needed to update com.googlemaps.io to 3.9.0.

I'm guessing that removing cordova-plugin-googlemaps prevented com.googlemaps.ios to be linked in the IPA event if it was still present.

So yeah, the fix for me was:

npm run cordova plugin rm cordova-plugin-googlemaps
npm run cordova plugin rm com.googlemaps.ios
npm run cordova plugin add com.googlemaps.ios@3.9.0
npm run cordova plugin rm cordova-plugin-googlemaps@2.7.1

Thanks for your help!