Skip to content
This repository has been archived by the owner on Jan 4, 2024. It is now read-only.

ITMS-90809: deprecated API UIWebView usage #36

Closed
soemo opened this issue Feb 27, 2020 · 11 comments
Closed

ITMS-90809: deprecated API UIWebView usage #36

soemo opened this issue Feb 27, 2020 · 11 comments

Comments

@soemo
Copy link

soemo commented Feb 27, 2020

Apple announced, that apps using UIWebView won't be accepted from April 2020 (new submissions) / December 2020 (updates). So that we are be able to submit our apps in April, we test the submit with a fresh created trigger.io app (forge create) and build it (forge build ios) and uploaded it to Apple TestFlight.

Unfortunately we received the warning from Apple for this fresh trigger.io core app too.

2020-02-26-ITMS-90809-deprecated-API-usage-UIWebView

We looked for UIWebKit symbols (nm development/ios/device-ios.app/Forge | grep UIWebView). This is the result:

uiwebview-findings

Expected behaviour
No usage of the deprecated UIWebView API in the trigger core. So that a fresh plain trigger core app is accepted from Apple.

Actual behaviour
Apple will stop accepting the submission of an app with trigger.io core from April on.

App information:

  • new created trigger.io app
  • Forge Platform version: 2.8.5
  • trigger config.json
{
	"config_version": "4",
	"name": "Test App",
	"author": "soemo",
	"version": "0.1",
	"platform_version": "v2.8.5",
	"description": "An empty app created by default",
	"core": {
		"general": {
			"logging": {
				"level": "DEBUG"
			},
			"reload": true
		},
	"ios": {
                "webview": "WKWebView",
                "device_family": "any",
                "package_name": "com.xyz.uiwebviewtest.ios"
               }
	},
	"modules": {
	}
}
@soemo soemo changed the title ITMS-90809: deprecated API usage UIWebView ITMS-90809: deprecated API UIWebView usage Feb 27, 2020
@antoinevg
Copy link
Contributor

Thank you for the report.

We've been keeping the window for UIWebView users open for as long as possible before permanently deleting the UIWebView support code from the runtime.

We'll be pushing a new build to staging that finally deletes UIWebView support from the runtime early next week.

Community discussion: https://community.trigger.io/t/final-removal-of-uiwebview-support/1047

@soemo
Copy link
Author

soemo commented Feb 27, 2020

Thank you for the explanation and announcement of the roadmap

@antoinevg
Copy link
Contributor

I've just pushed platform version v2.8.6 which removes the last remaining UIWebView code from the Forge runtime.

You can update by bumping your platform version as follows:

"platform_version": "v2.8.6"

@soemo
Copy link
Author

soemo commented Mar 2, 2020

Thanks. We tried it out and with a new created trigger.io core app we received no deprecated UIWebView warning from Apple anymore.

But if we include the bolts module into the config, we still see a reference to UIWebView in our app.

development/ios/device-ios.app/Forge | grep UIWebView
                 U _OBJC_CLASS_$_UIWebView
0000000100279bf0 s ___block_descriptor_48_e8_32s40r_e31_v24@?0@"UIWebView"8@"NSError"16l
0000000100279bc0 s ___block_descriptor_64_e8_32s40s48s56r_e19_v16@?0@"UIWebView"8l

The only reference to UIWebView in bolts we can found is in a comment though: https://github.com/trigger-corp/trigger.io-bolts/blob/ff8ff07e7eda08669de6898dd2317648bea64973/inspector/ios-inspector/ForgeModule/Bolts.framework/Headers/BFWebViewAppLinkResolver.h#L16

Looks like it uses https://github.com/BoltsFramework/Bolts-ObjC which has a reference to UIWebView. We saw this new PR UIWebview -> WKWebView
Might be necessary to update trigger.io-bolts to get a version that integrates this PR?

trigger config.json

{
	"config_version": "4",
	"name": "Test App",
	"author": "soemo",
	"version": "0.1",
	"platform_version": "v2.8.6",
	"description": "An empty app created by default",
	"core": {
		"general": {
			"logging": {
				"level": "DEBUG"
			},
			"reload": true
		},
		"ios": {
			"webview": "WKWebView",
			"device_family": "any",
			"package_name": "com.xyz.uiwebviewtest.ios"
		}
	},
	"modules": {
		"bolts": {
			"version": "1.9.0",
			"config": {}
		}
	}
}

@antoinevg
Copy link
Contributor

Wow! Thank you so much for doing the legwork on this.

I've pulled the PR in question into bolts v1.10.0 and updated the parse module dependencies to the new version.

If you bump your Parse config to v3.2 you should be good to go:

"parse": {
    "version": "3.2",
    ...
}

@soemo
Copy link
Author

soemo commented Mar 5, 2020

Thanks, with the new module version we received no deprecated UIWebView warning for our app from Apple anymore.

@soemo
Copy link
Author

soemo commented Mar 5, 2020

When do you think will be version 2.8.6 set to stable?

@antoinevg
Copy link
Contributor

Great to hear!

We'll probably be moving the release to stable towards the end of the month. We need to extend the window as wide as possible for everyone to get a chance to test submission.

@soemo
Copy link
Author

soemo commented Mar 6, 2020

To be honest, the end of the month is too late for us. To be really well prepared for the beginning of April, we need the stable version as soon as possible. Our internal deadline is the 20th of March.

If someone does not want to use it yet, he does not need to upgrade from version 2.8.5 to 2.8.6.

@antoinevg
Copy link
Contributor

antoinevg commented Mar 6, 2020

Unfortunately this is not a case of "you don't have to upgrade if you don't want to".

Apple will be rejecting app submissions that are not built with this release so it does affect all of our customers.

As other customers submit their apps it is likely that there will still be outstanding issues as their configurations are different from yours.

As a consequence, pushing this branch to production prematurely will create a situation where we need to push out a new release for every customer!

You don't have to wait for a staging branch to be pushed to production if you are happy that your app passes review and wish to urgently submit for release. This is exactly the reason we started making our staging branch available publicly.

@antoinevg
Copy link
Contributor

v2.8.6 has been pushed to stable:

https://trigger.io/docs/current/api/release_notes.html

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

No branches or pull requests

2 participants