Post iOS 11.3 - Mobile app freeze / crash on resume after sleep - silk ui 

Post iOS 11.3 - Mobile app freeze / crash on resume after sleep - silk ui 

  

Hi guys,

Has anyone seen issues where phones updated to iOS 11.3 freeze if they sleep while an outsystems app is running and are woken up? Screen elements, (but not always ALL screen elements) become unresponsive.

Not seen to affect Android, and doesn't seem to be an issue on iOS prior to update.

The iOS update could be a red-herring, i only have one device which hasn't been updated so could be a false positive. We have also updated our app significantly over the last few days. Odd though that on any screen it has started freezing. Definitely not exhibited on Android.

The app must be open at the time the phone goes to sleep for the issue to happen.

I will of course try winding back our app to see if recent changes have affected this change but wanted to put this out there in case others are having issues. I'm just in the free environment at the moment, so don't want to trouble the support guys with this and will try to research myself as much as possible to narrow down the issue and reply if I figure it out.

Thanks,

Danny

Danny O'Neill wrote:

Hi guys,

Has anyone seen issues where phones updated to iOS 11.3 freeze if they sleep while an outsystems app is running and are woken up? Screen elements, (but not always ALL screen elements) become unresponsive.

Not seen to affect Android, and doesn't seem to be an issue on iOS prior to update.

The iOS update could be a red-herring, i only have one device which hasn't been updated so could be a false positive. We have also updated our app significantly over the last few days. Odd though that on any screen it has started freezing. Definitely not exhibited on Android.

The app must be open at the time the phone goes to sleep for the issue to happen.

I will of course try winding back our app to see if recent changes have affected this change but wanted to put this out there in case others are having issues. I'm just in the free environment at the moment, so don't want to trouble the support guys with this and will try to research myself as much as possible to narrow down the issue and reply if I figure it out.

Thanks,

Danny

Hi Danny, 

Same here. Problem started after upgrading to IOS 11.3. 

Regards, Dirk


Report it using support portal guys so Outsystems teams can fix this.

Every OS updates will have risk of breaking something that Outsystems cannot predict.

Dirk, thanks for confirming I'm not the only one, Harlin thanks for suggesting a support call. I have given them details so that they know in case this affects many people.


One further detail: I have tried creating an OnApplicationResume action. It currently just creates an message to the user saying Welcome Back!. This does work, although the rest of the screen is frozen and I will now try to work round the problem using that - perhaps I can force the screen to redraw to get it to come back to life, even if it means reloading the current screen. Not sure how to get it to do that but will work it out if I can!

Hi guys,

In case anyone else needs a work around for this I have implemented something which is working for me:

I use the OnApplicationResume event to triger a whole page reload.

Initially I tied using it to flip a bool from false to true again, that variable was referenced in an if widget encapsulating a whole screen. That didn't work, the if did hide the screen and showed my false branch (in which I put a welcome back message) but the screen still is frozen and unresponsive. I mention this as it might help OS track down what is going on.

Then I changed to making it navigate to a new screen (edit: I mean the same screen, not sure why I wrote new) which does work and allows touch events to control the screen again.

In case anyone needs it, although I'm a total noob so I'm sure you can all achieve it better:

0) on each screen suffering with the issue (all of mine) I have put a hidden (css display:none) button with an appropriate ID, eg 'HiddenButtonForOnResume_Dashboard'

1) OnApplicationResume create action

2) Javascript action and in it (im terrible with syntax - am old so forgive me):

- element = get by id 'hiddenbutton'

- if (element) { element.click(); }

- repeat for other screens. nb the assignment then the if becasue they wont exist on the other screens so would throw exception

3) setup the action for each button to reload the screen using a navigation action

Note that in mine I didn't like the momentary flicker as the navigation ran so I have some extra steps, first I actually stay on the same screen and using the whole-screen-encapsulating if I mention above I show a friendly message, then I use a javascript timeout function to call another action on the screen to navigate 1.5s later. Ends up a little smoother and has the benifit of tricking the user into thinking this was a deliberate thing and not just an app that flickers oddly when coming out of screen lock.

Hope that helps someone else, maybe at least Dirk if he is the only one suffering with this. No one else coming out of woodwork yet, so perhaps there's a specific comibination of platform or dev version or particular screen elements, maybe blocks with certain onrender functions, who knows, but anyone using my little app on iOS 11.3 on a phone was getting affected and now they aren't with workaround above.

Thanks all and hopefully whatever is 'broken' if indeed something is, will get fixed or adjusted to make things better again.

Hi Danny,

We are experiencing this also - Outsystems informs us that the issue is due to a bug introduced with iOS10.3 with the internal Apple's web view, UIWebView. It has "a known issue where, after sending an application to background for some time, the events associated to End-User inputs have a negative timestamp" causing the issue.

Apparently they have a fix for this which didn't quite make it into the most recent platform version 10.0.816.0 but we should be able to expect it in a future release.

Hope this helps someone.

Cheers,

Adrian


Danny O'Neill wrote:

Hi guys,

In case anyone else needs a work around for this I have implemented something which is working for me:

I use the OnApplicationResume event to triger a whole page reload.

Initially I tied using it to flip a bool from false to true again, that variable was referenced in an if widget encapsulating a whole screen. That didn't work, the if did hide the screen and showed my false branch (in which I put a welcome back message) but the screen still is frozen and unresponsive. I mention this as it might help OS track down what is going on.

Then I changed to making it navigate to a new screen (edit: I mean the same screen, not sure why I wrote new) which does work and allows touch events to control the screen again.

In case anyone needs it, although I'm a total noob so I'm sure you can all achieve it better:

0) on each screen suffering with the issue (all of mine) I have put a hidden (css display:none) button with an appropriate ID, eg 'HiddenButtonForOnResume_Dashboard'

1) OnApplicationResume create action

2) Javascript action and in it (im terrible with syntax - am old so forgive me):

- element = get by id 'hiddenbutton'

- if (element) { element.click(); }

- repeat for other screens. nb the assignment then the if becasue they wont exist on the other screens so would throw exception

3) setup the action for each button to reload the screen using a navigation action

Note that in mine I didn't like the momentary flicker as the navigation ran so I have some extra steps, first I actually stay on the same screen and using the whole-screen-encapsulating if I mention above I show a friendly message, then I use a javascript timeout function to call another action on the screen to navigate 1.5s later. Ends up a little smoother and has the benifit of tricking the user into thinking this was a deliberate thing and not just an app that flickers oddly when coming out of screen lock.

Hope that helps someone else, maybe at least Dirk if he is the only one suffering with this. No one else coming out of woodwork yet, so perhaps there's a specific comibination of platform or dev version or particular screen elements, maybe blocks with certain onrender functions, who knows, but anyone using my little app on iOS 11.3 on a phone was getting affected and now they aren't with workaround above.

Thanks all and hopefully whatever is 'broken' if indeed something is, will get fixed or adjusted to make things better again.



Same issue.