47 votes

OpenURL dans iOS10

Donc, apparemment, OpenURL a été déprécié dans iOS 10. Quelqu'un aurait-toute documentation sur le pourquoi ou peut expliquer quoi faire ensuite? J'ai regardé sur le site d'Apple déjà trouvé quelques choses relatives à la OpenURL et c'est ce qu'ils disent à utiliser:

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

Personne ne dispose d'aucune preuve que c'est la nouvelle utilisation de l'OpenURL dans Swift 3.0? En outre quelles valeurs doivent être utilisés dans l' options: et completionHandler: paramètres respectivement?

63voto

Async- Points 1335

Vous pouvez également utiliser la vérification conditionnelle si vous mettez à jour votre application avec un code compatible 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)")
     }
   }
 }
 

Usage:

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

La source

44voto

Foo Points 3640

Une solution rapide:

 // Objective-C
UIApplication *application = [UIApplication sharedApplication];
[application openURL:URL options:@{} completionHandler:nil];

// Swift
UIApplication.shared.open(url, options: [:], completionHandler: nil)
 

Une réponse complète:

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

Crédits: Keith Harrison (useyourloaf.com)

13voto

scol Points 111

Un dictionnaire d'options vide aura le même comportement que openUrl .

Autrement:

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

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

5voto

Yasir Points 673

La nouvelle UIApplication méthode openURL:options:completionHandler:, qui est exécutée de manière asynchrone et appelle le spécifiée gestionnaire d'achèvement sur la file d'attente principale (cette méthode remplace openURL:).

C'est en vertu de cadres Supplémentaires pour les Changements > UIKit à: https://developer.apple.com/library/prerelease/content/releasenotes/General/WhatsNewIniOS/Articles/iOS10.html

3voto

handiansom Points 478

Vous devez d'abord vérifier avant de charger l'URL. Veuillez vérifier les codes ci-dessous.

 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
                            }];
}
 

J'espère que ça aide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X