Partager via


Modifications de WebKit et Safari dans iOS 11

iOS 11 introduit une nouvelle version du navigateur web Safari , Safari 11.0, qui inclut des modifications apportées à WebKit et SafariServices. Ce guide explore ces modifications.

SafariServices

SFSafariViewController a été introduit dans iOS 9 en tant qu’option permettant d’afficher du contenu web ou d’authentifier les utilisateurs à partir de votre application. Pour plus d’informations sur ses fonctionnalités, consultez le guide Vues web .

iOS 11 a introduit des mises à jour de style pour le contrôleur d’affichage Safari, offrant à vos utilisateurs une expérience plus fluide entre une application et le web. Par exemple, la suppression de la barre d’adresses donne maintenant au contrôleur d’affichage Safari l’impression d’un navigateur dans l’application, plutôt que d’un mini-navigateur. Vous pouvez également personnaliser le jeu de couleurs pour qu’il s’adapte au jeu de couleurs de votre application en définissant les preferredBarTintColor propriétés et PreferredControlTintColor :

sfViewController.PreferredControlTintColor = UIColor.White;
sfViewController.PreferredBarTintColor = UIColor.Purple;

L’extrait de code suivant affiche les barres en violet et blanc, comme indiqué dans l’image suivante :

Barres SFSafariViewController rendues en violet et blanc

Le bouton Ignorer présenté dans le contrôleur d’affichage Safari peut également être modifié en définissant la DismissButtonStyle propriété sur Done, Closeou Cancel:

sfViewController.DismissButtonStyle = SFSafariViewControllerDismissButtonStyle.Close;

Ignorer le texte du bouton modifié

Cette valeur peut être modifiée lors de la SFSafariViewController présentation.

Selon le contenu affiché à l’intérieur d’un contrôleur d’affichage Safari, il peut être nécessaire de s’assurer que les barres de menus ne se réduisent pas lorsque l’utilisateur défile. Pour cela, définissez la nouvelle BarCollapsedEnabled propriété sur false:

var config = new SFSafariViewControllerConfiguration();
config.BarCollapsingEnabled = false;

var sfViewController = new SFSafariViewController(url, config);

Réduction de barre désactivée

Apple a également apporté des mises à jour à la confidentialité dans le contrôleur Safari View dans iOS 11. Désormais, les données de navigation telles que les cookies et le stockage local n’existent que par application, plutôt que sur toutes les instances du contrôleur de vue Safari. Cela maintient l’activité de navigation utilisateur privée au sein de votre application.

Des fonctionnalités supplémentaires telles que la prise en charge du glisser-déplacer pour les URL et la prise en charge de window.open() ont également été ajoutées dans SFSafariViewController iOS 11. Vous trouverez plus d’informations sur ces nouvelles fonctionnalités dans la documentation SFSafariViewController d’Apple.

WebKit

WKWebView a été introduit dans le cadre de WebKit dans iOS 8 afin d’afficher du contenu web à votre utilisateur. Il est beaucoup plus personnalisable que SFSafariViewController, ce qui vous permet de créer votre propre navigation et votre propre interface utilisateur.

Apple a introduit trois améliorations main pour WKWebView iOS 11 :

  • Possibilité de gérer les cookies
  • Filtrage du contenu
  • Chargement de ressources personnalisées

La gestion des cookies s’effectue via la nouvelle WKHttpCookieStore classe, qui vous permet d’ajouter et de supprimer des cookies, d’obtenir tous les cookies stockés dans un WKWebView et d’observer les modifications apportées au magasin de cookies.

Le filtrage de contenu vous permet de gérer le type de contenu que votre utilisateur verra, ce qui vous permet de vous assurer qu’il est sécurisé, convivial pour la famille et, si nécessaire, disponible uniquement pour un groupe d’utilisateurs sélectionné. Cela est implémenté via la nouvelle WKContentRuleList classe, en fournissant des paires de déclencheurs et d’actions dans JSON. Pour plus d’informations sur ces déclencheurs et actions, consultez le guide Règles de blocage de contenu d’Apple.

iOS 11 vous permet désormais de personnaliser WKWebView avec le chargement de ressources personnalisées pour votre contenu web. Cela est implémenté via l’interface IWKUrlSchemeHandler , ce qui vous permet de gérer les schémas d’URL qui ne sont pas natifs du Kit Web. Cette interface a une méthode de démarrage et d’arrêt qui doit être implémentée :

public class MyHandler : NSObject, IWKUrlSchemeHandler {

    [Export("webView:startURLSchemeTask:")]
    public void StartUrlSchemeTask(WKWebView webView, IWKUrlSchemeTask urlSchemeTask){
        
        // Implement a IWKUrlSchemeTask here
        var response = new NSUrlResponse(urlSchemeTask.Request.Url, "text/html", ContentLength, null);
        urlSchemeTask.DidReceiveResponse(response);
        urlSchemeTask.DidReceiveData(someData);
        urlSchemeTask.DidFinish();
    }

    [Export("webView:stopURLSchemeTask:")]
    public void StopUrlSchemeTask(WKWebView webView, IWKUrlSchemeTask urlSchemeTask){
        throw new NotImplementedException();
    }

}

Une fois le gestionnaire implémenté, utilisez-le pour définir la SetUrlSchemeHandler propriété sur le WKWebViewConfiguration. Ensuite, chargez l’URL d’un élément qui utilise le schéma personnalisé :

var config = new WKWebViewConfiguration();
config.SetUrlSchemeHandler(new MyHandler(), "xamarin-asset");

webView = new WKWebView (View.Frame, config);
webView.LoadRequest (new NSUrlRequest("xamarin-asset://xamarin.com"));