OpenURL en iOS10

Entonces, aparentemente, OpenURL se ha depreciado en iOS 10. ¿Alguien tiene alguna documentación sobre por qué o puede explicar qué hacer a continuación? Ya miré en el sitio de Apple y encontré algunas cosas relacionadas con OpenURL y esto es lo que dicen usar ahora:

 UIApplication.shared().open(url: URL, options: [String: AnyObject], completionHandler: ((Bool) -> Void)?) 

¿Alguien tiene alguna evidencia de que esta sea la nueva forma de usar OpenURL en Swift 3.0? Además, ¿qué valores se van a utilizar en las options: y completionHandler: parámetros respectivamente?

También puede usar la verificación condicional si está actualizando su aplicación con el código compatible con iOS10:

 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)") } } } 

Uso:

 open(scheme: "tweetbot://timeline") 

Fuente

Una solución rápida:

 // Objective-C UIApplication *application = [UIApplication sharedApplication]; [application openURL:URL options:@{} completionHandler:nil]; // Swift UIApplication.shared.open(url, options: [:], completionHandler: nil) 

Una respuesta completa:

http://useyourloaf.com/blog/openurl-deprecated-in-ios10/

Créditos: Keith Harrison (useyourloaf.com)

Un diccionario de opciones vacío dará como resultado el mismo comportamiento que openUrl .

De otra manera:

 +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ | 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 | +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ 

Desde 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 *)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 application UIKIT_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 property UIKIT_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 

El nuevo método UIApplication openURL: options: completionHandler :, que se ejecuta de forma asincrónica y llama al controlador de finalización especificado en la cola principal (este método reemplaza a openURL :).

Esto se encuentra en Cambios adicionales del marco > UIKit en: https://developer.apple.com/library/prerelease/content/releasenotes/General/WhatsNewIniOS/Articles/iOS10.html

Primero debe verificar antes de cargar la url. Por favor revisa los códigos a continuación.

 if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"https://www.gmail.com"]]){ [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://www.gmail.com"] options:@{} completionHandler:^(BOOL success) { //completion codes here }]; } 

Espero que esto ayude.

Si su aplicación todavía es compatible con iOS 9 o inferior, simplemente siga usando el viejo openURL . Solo debe pasar al nuevo si su objective de implementación es iOS 10 .

deja real:

 [String: AnyObject] = ["xxx key": "xxx value" as AnyObject, "yyy key": "yyy value" as AnyObject] UIApplication.shared.open(URL(string: "http:google.com")!, options: actual, completionHandler: {(true) -> Swift.Void in print("Refresh") }) 

Donde xxx e yyy son cadenas que desea imprimir o dejarlas en blanco.