How to make USSD call on iOS 15.4 beta

My App try to call via tel: scheme for USSD, it worked on iOS 15.3 and earlier but doesn't work on iOS 15.4 beta.

let number = "10*10#" // Doesn't work.
// let number = "1234" // This is Okay.

guard let url = URL(string: "tel:" + number),
          UIApplication.shared.canOpenURL(url) else {
    fatalError()
}

UIApplication.shared.open(url, options: [:]) { success in
    print("success: \(success)") // This is true
}

canOpenUrl() returns true, which means now we can call open() method. But nothing happens when we call open(url: options: completion:).

  • I am facing the same issue if you got the solution please comment Thank You

  • Same issue here. My app functionality is broken for this -- I allow users to make calls with their caller id blocked by prefixing with '67'. I've tried manually encoding by replacing '' with '%2A' but it still does not work. Has anyone opened a Technical Support incident?

  • Is there going to be a fix for this limitation? This impacts a very large amount of users.. The proposed workaround is not a quick solution for multiple sites and would have to be addressed individually??

Accepted Reply

This issue seems to be resolved with iOS 15.5 beta 4. So, I think we should wait for its release and my user for updating iOS.

  • Is there a fix for 15.5? Through testing, it is found that it still does not work on ios15.5

  • we still have the issue.

Add a Comment

Replies

I am facing the same issue when dialing by using WebDriverAgent with url command:

{"url":"tel://0123456"}

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

It used to work with iOS < 15.4. I am not even using special chars, even a normal dial to a normal msisdn is not working anymore.

  • The tel URL scheme doesn't take slashes actually. Try tel:0123456. Or let iOS figure it out for you:

            var comps = URLComponents()

            comps.scheme = "tel"         comps.path = "0123456"         guard let url = comps.url else {             assertionFailure(); return         }

            UIApplication.shared.open(url, options: [:]) { success in             if !success {                 NSLog("*** Open URL (url.absoluteString) failed")             }         }

Add a Comment

This does seem like a pretty critical regression. Are there no workarounds available for this?

  • It still doesn't work. In a team we tried different approaches to character encoding. It didn't do anything. We noticed that other applications got rid of the # and * characters.

Add a Comment

We ran into this same issue on iOS 15.4.1. In our case, tel links that included the # symbol weren't working on Chrome, but they did work in Safari. iOS 15.3 and older don't have the issue.

We couldn't fix the issue directly. However, we eventually settled on a less-than-desirable workaround of copying the phone number to the clipboard and instructing users to paste it into their phone app. We also had to specifically detect that the user was using Chrome in iOS so that other users wouldn't be affected.

I hope Apple fixes this soon.

My team's app was also seeing this issue on iOS v15.4.0 and above. I've opened both a Technical Support Incident and submitted the bug via Feedback Assistant.

From the TSI I got the response: "Our engineers have reviewed your request and have determined that you are experiencing a known issue for which there is no known workaround at this time."

Knowing that there was no native option, my team ended up using Twilio to route the call and spoof the callback number (which is an added cost to us versus the user's phone company doing that, but a necessary app requirement).

This issue seems to be resolved with iOS 15.5 beta 4. So, I think we should wait for its release and my user for updating iOS.

  • Is there a fix for 15.5? Through testing, it is found that it still does not work on ios15.5

  • we still have the issue.

Add a Comment

I just upgrade iOS to 15.5 and USSD is now working.