OpenURL in iOS10
Swift 3+:
func open(scheme: String) { if let url = URL(string: scheme) { if #available(iOS 10, *) { UIApplication.shared.open(url, options: [:], completionHandler: { (success) in print("Open \(scheme): \(success)") }) } else { let success = UIApplication.shared.openURL(url) print("Open \(scheme): \(success)") } } }
Usage:
open(scheme: "tweetbot://timeline")
A quick fix:
// Objective-CUIApplication *application = [UIApplication sharedApplication];[application openURL:URL options:@{} completionHandler:nil];// SwiftUIApplication.shared.open(url, options: [:], completionHandler: nil)
A complete answer:
http://useyourloaf.com/blog/openurl-deprecated-in-ios10/
Credits: Keith Harrison (useyourloaf.com)
An empty options dictionary will result in the same behaviour as openUrl.
Otherwise:
+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+| UIApplicationOpenURLOptionsSourceApplicationKey | NSString containing the bundle ID of the originating application |+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+| UIApplicationOpenURLOptionsAnnotationKey | property-list typed object corresponding to what the originating application passed in UIDocumentInteractionController's annotation property |+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+| UIApplicationOpenURLOptionsOpenInPlaceKey | bool NSNumber, set to YES if the file needs to be copied before use |+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+
From UIApplication.h
// Options are specified in the section below for openURL options. An empty options dictionary will result in the same// behavior as the older openURL call, aside from the fact that this is asynchronous and calls the completion handler rather// than returning a result.// The completion handler is called on the main queue.- (void)openURL:(NSURL*)url options:(NSDictionary<NSString *, id> *)options completionHandler:(void (^ __nullable)(BOOL success))completion NS_AVAILABLE_IOS(10_0) NS_EXTENSION_UNAVAILABLE_IOS("");UIKIT_EXTERN UIApplicationOpenURLOptionsKey const UIApplicationOpenURLOptionsSourceApplicationKey NS_SWIFT_NAME(sourceApplication) NS_AVAILABLE_IOS(9_0); // value is an NSString containing the bundle ID of the originating applicationUIKIT_EXTERN UIApplicationOpenURLOptionsKey const UIApplicationOpenURLOptionsAnnotationKey NS_SWIFT_NAME(annotation) NS_AVAILABLE_IOS(9_0); // value is a property-list typed object corresponding to what the originating application passed in UIDocumentInteractionController's annotation propertyUIKIT_EXTERN UIApplicationOpenURLOptionsKey const UIApplicationOpenURLOptionsOpenInPlaceKey NS_SWIFT_NAME(openInPlace) NS_AVAILABLE_IOS(9_0); // value is a bool NSNumber, set to YES if the file needs to be copied before use