iOS Launch URL function won't pass GET parameters

1- Call “Launch URL” function in a blueprint.

2- Fill it’s string with with an intent with parameters. There are Example URL s below.

3- Package the game for Android or directly test it on WindowsEditor(if you didn’t select Whatsapp).

4- Call this function, for example from Begin Play of the level.

Result: When the function is executed, intent passes parameters successfully.

5- Package the game for iOS

Expected: When the function is executed, intent passes parameters successfully.

Result: Whatsapp text doesn’t pass at all. Mailto text passes in a wrong form.


Example URL 1: https://www.abc.com/xyz.php?userid=1047

Example URL 1 EXPECTED result is: https://www.abc.com/xyz.php?userid=1047

Example URL 1 BAD result is: https://www.abc.com/xyz.php%3Fuserid=1047


Example URL 2: whatsapp://send?text=https%3A%2F%2Fwww.abc.com%2Fdownload.php%3Fid%3D39%26nick%3DSalihPC


Example URL 3: mailto:contact@abc.com?subject=User%20Feedback%20%28ID%2039%29

.

With all of these examples, question marks(?) turn into %3F. This causes the bug. This doesn’t occur in Windows or Android, but iOS.

Hello SalihBalkan,

I’ve tested this using an iPad Air in 4.13.2 using the first and third example URLs, since I don’t have Whatsapp, and I’ve not seen the issue you’re describing. As it may be specific to the settings you have or the device you’re using, could you provide your packaging logs and what device/version of iOS you’re using?

I am able to reproduce this with iOS 8. It is iPhone 4S but I expect the same result on other devices too. There is nothing in packaging logs about this issue, but I can provide if you still request it.

I prepared a test page for this.
https://www.skateandstrike.com/test/get.php?mytext=Hello%20World

Could you please try with this link? In Android and Windows, it is going to the correct page:
https://www.skateandstrike.com/test/get.php?mytext=Hello%20World

But if I use same function in iOS, it goes to this page:
https://www.skateandstrike.com/test/get.php%3Fmytext=Hello%20World

I think problem is in the iOS specific function that is defined here:

Engine\Source\Runtime\Core\Private\IOS\IOSPlatformProcess.cpp\FIOSPlatformProcess::LaunchURL

There is a percent encode computation here. I think problem is at that computation.

Thank you for that information ,

I ended up being able to get it to reproduce with the same device as before and your original links. It seems that even if the link isn’t legitimate, it still requires being connected to the internet for the issue to appear and the iPad I was testing on was not connected at the time. At least that allowed me to specify that on the bug report as well.

I’ve entered a bug report for the issue under the number UE-38376.

Unfortunately I can’t think of any workarounds at the moment.

It seems that this was caught previously and was fixed in 4.14. I tested this same issue on 4.14 Preview 2 and it no longer occurs.