Open iOS app from URL AND Pass Parameters
Here is a nice tutorial on Using Custom URL Scheme in iOS
As in the tutorial, you should parse the URL parameters and store them to use in the app in this method:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { // Do something with the url here}
On Xcode 12 this code works perfectly. You can imagine that this is also a URL as regular. In Source app you can call and open destination url with parameter like
let url = URL(string: "DestinationApp:PATH?PARAMETER=11111") UIApplication.shared.open(url!) { (result) in if result { print(result) // The URL was delivered successfully! } }
Destination app can handle metod in AppDelegate with this method. Alert is for double check.
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { // Determine who sent the URL. let sendingAppID = options[.sourceApplication] print("source application = \(sendingAppID ?? "Unknown")") // Process the URL. guard let components = NSURLComponents(url: url, resolvingAgainstBaseURL: true), let path = components.path, let params = components.queryItems else { print("Invalid URL or path missing") return false } if let parameter = params.first(where: { $0.name == "PARAMETER" })?.value { print("path = \(path)") print("parameter = \(parameter)") let alert = UIAlertController(title: "Path = \(path)", message: "Parameter = \(parameter)", preferredStyle: .alert) let keyWindow = UIApplication.shared.windows.filter {$0.isKeyWindow}.first if var topController = keyWindow?.rootViewController { while let presentedViewController = topController.presentedViewController { topController = presentedViewController } topController.present(alert, animated: true, completion: nil) } return true } else { print("parameter is missing") return false }}