Stream Reloads Break Application Only on iOS


#1

Hello,

I discovered that, only recently, pushing a reload works fine for Android, but breaks the application for anyone on iOS. When relaunching to receive the reload, the application hangs at splash.

I’m not sure where this is coming from, and until a solution is discovered reloads have gone straight from useful and efficient right past useless straight to dangerous and deadly.

Antoine, do you have any thoughts on why this might be occuring?


#2

Application killing reloads are not fun, I’m sorry! :frowning:

We haven’t changed anything on our side so this might be tricky to debug:

  1. Can you reliably reproduce it on your side?

  2. Do the affected devices work again if you push out another reload with the original code?

  3. Are you seeing anything in the logs if you plug in your iOS hardware, open Console.app, select your device and try to start the app?

  4. Are you able to connect to the device via the “Safari Develop => Device => App” menu? Is there any helpful info in the Console output?

Also, something else that’s worth checking:

When apps are hanging at the splash screen it’s often because the hide-manually flag is set on the launchimage module and there’s a Javascript error that’s causing the app to crash before forge.launchimage.hide gets called.


#3

Thanks for the speedy reply.

  1. Yes
  2. No
  3. Yes. Forge CFNetwork returns a volatile error of Cannot start load of Task <9DA7F333-3639-4467-8F53-EF63B784507D>.<0> since it does not conform to ATS policy followed another volatile error of NSURLConnection finished with error - code -1022
  4. No, it does not show up in the Safari Develop menu as a device.

Looking into the ATS Policy, a common suggestion seems to be allowing arbitrary loads in our info.plist. What would you recommend?


#4

Setting arbitrary loads runs the risk of having your app rejected during review.

Have a look at the request module documentation and set specific NSExceptions for each of the remote sites.

There’s also an example or two in the Forge 2.5 migration guide:

http://trigger.io/cross-platform-application-development-blog/2016/09/06/trigger-io-forge-v2-5-beta-and-ios-10-migration-guide/