Adobe recommande d’utiliser l’éditeur d’application d’une seule page (SPA) pour les projets nécessitant un rendu côté client basé sur la structure SPA (par exemple, React). En savoir plus.
La création d’un site mobile est similaire à celle d’un site classique en ce sens qu’il faut également créer des modèles et des composants. Pour plus de détails sur la création de modèles et de composants, reportez-vous aux pages suivantes : Modèles, Composants et Prise en main du développement d’AEM Sites. La principale différence entre les deux consiste à activer les fonctionnalités mobiles intégrées d’AEM sur le site. Pour ce faire, il convient de créer un modèle qui repose sur le composant de page mobile.
Il est aussi préférable d’utiliser le responsive design pour créer un seul site web prenant en charge plusieurs tailles d’écran.
Pour commencer, vous pouvez consulter le site mobile de démonstration We.Retail disponible dans AEM.
Pour créer un site adapté aux appareils mobiles, procédez comme suit :
Créez le composant de page :
Définissez la propriété sling:resourceSuperType
sur wcm/mobile/components/page
.
De cette façon, le composant repose sur le composant de page mobile.
Créez le body.jsp
avec la logique spécifique au projet.
Créez le modèle de page :
sling:resourceType
sur le composant de page nouvellement créé.allowedPaths
.Créez la page de conception pour le site.
Créez la page racine du site sous le nœud /content
:
cq:allowedTemplates
.cq:designPath
.Dans les propriétés de page de la page racine du site, définissez les groupes d’appareils dans l’onglet Mobile.
Créez les pages du site en vous servant du nouveau modèle.
Le composant de page mobile (/libs/wcm/mobile/components/page
) :
head.jsp
, il extrait le groupe d’appareils mobiles actuel de la requête et, si un groupe d’appareils est identifié, il utilise la méthode drawHead()
du groupe pour ajouter le composant d’initialisation de l’émulateur associé du groupe d’appareils (uniquement en mode de création) et le rendu CSS du groupe d’appareils.La page racine du site mobile doit être au niveau 1 de la hiérarchie des nœuds et il est recommandé de se placer sous le nœud /content.
Utilisez Multi Site Manager (MSM) pour créer une Live Copy mobile à partir d’un site classique. Celui-ci est automatiquement transformé en site mobile qui possède toutes les fonctionnalités des sites mobiles (par exemple, modification dans un émulateur) et peut être géré en synchronisation avec le site classique. Reportez-vous à la section Création d’une Live Copy pour différents canaux de la page Multi-Site Manager.
Les packages Java contenant les classes mobiles sont les suivants :
Le site mobile de démonstration We.Retail utilise les composants mobiles suivants, situés sous /libs/foundation/components
:
Nom | Groupe | Caractéristiques |
mobilefooter | caché | - Pied de page |
mobileimage | Mobile | - Basé sur le composant de base d’image - Effectue le rendu d’une image si l’appareil en est capable |
mobilelist | Mobile | - Basé sur le composant list foundation - listitem_teaser.jsp effectue le rendu d’une image si l’appareil en est capable |
mobilelogo | caché | - Basé sur le composant de base du logo - effectue le rendu d’une image si l’appareil en est capable |
mobilereference | Mobile | - Similaire au composant de base de référence - Mappe un composant textimage à un composant mobiletextimage et un composant image à un élément mobileimage |
mobiletextimage | Mobile | - Basé sur le composant textimage foundation - Effectue le rendu d’une image si l’appareil en est capable |
mobiletopnav | caché | - Basé sur le composant topnav foundation - Effectue uniquement le rendu du texte |
Le framework AEM Mobile permet de développer des composants sensibles au type d’appareil émettant la requête. Les exemples de code suivants montrent comment utiliser l’API mobile AEM dans un composant jsp et en particulier comment exécuter les actions suivantes :
Récupérer la classe d’appareil à partir de la requête :
Device device = slingRequest.adaptTo(Device.class);
Récupérer le groupe d’appareils :
DeviceGroup deviceGroup = device.getDeviceGroup();
Récupérer les fonctions du groupe d’appareils :
Collection<DeviceCapability> capabilities = deviceGroup.getCapabilities();
Récupérer les attributs de l’appareil (paire clé/valeur de fonction brute issue de la base de données WURFL) :
Map<String,String> deviceAttributes = device.getAttributes();
Récupérer le User-Agent de l’appareil :
String userAgent = device.getUserAgent();
Récupérer la liste des groupes d’appareils (groupes d’appareils affectés au site par l’auteur) à partir de la page active :
DeviceGroupList deviceGroupList = currentPage.adaptTo(DeviceGroupList.class);
Vérifier si le groupe d’appareils prend en charge les images :
if (deviceGroup.hasCapability(DeviceCapability.CAPABILITY_IMAGES)) {
…
OR
… if MobileUtil.hasCapability(request, DeviceCapability.CAPABILITY_IMAGES) {
…
Dans un fichier jsp, slingRequest
est disponible avec la balise <sling:defineObjects>
et currentPage
avec la balise <cq:defineObjects>
.
La création basée sur émulateur permet aux auteurs de créer des pages de contenu compatibles avec des clients mobiles. La création de contenu mobile suit le même principe que l’édition WYSIWYG locale. Pour que les auteurs puissent faire l’expérience du rendu de la page sur un appareil mobile, une page de contenu mobile est modifiée à l’aide d’un émulateur d’appareil.
Les émulateurs d’appareils mobiles sont basés sur un framework d’émulation générique. Pour plus de détails, reportez-vous à la page Émulateurs.
L’émulateur affiche l’appareil mobile sur la page pendant que les modifications normales (parsys, composants) sont apportées sur l’écran de l’appareil. Le type d’émulateur dépend des groupes d’appareils configurés pour le site. Plusieurs émulateurs peuvent être affectés à un seul groupe d’appareils. Tous les émulateurs sont alors disponibles sur la page de contenu. Par défaut, le premier émulateur affecté au premier groupe d’appareils attribué au site est affiché. Les émulateurs peuvent être activés au moyen du carrousel d’émulateurs en haut de la page ou avec le bouton de modification du sidekick.
Création d’un émulateur
Pour créer un émulateur, reportez-vous à la section Création d’un émulateur mobile personnalisé de la page Émulateurs.
Principales caractéristiques des émulateurs mobiles
Un groupe d’appareils est composé d’un ou de plusieurs émulateurs : la page de configuration du groupe d’appareils, par ex. /etc/mobile/groups/touch, contient la propriété emulators
sous le nœud jcr:content
.
Remarque : Bien que le même émulateur puisse être affecté à plusieurs groupes d’appareils, ce n’est pas très logique.
Dans la boîte de dialogue de configuration du groupe d’appareils, la propriété emulators
est définie avec le chemin du ou des émulateurs souhaités. Par exemple : /libs/wcm/mobile/components/emulators/iPhone4
.
Les composants de l’émulateur (par exemple, /libs/wcm/mobile/components/emulators/iPhone4
) étendent le composant de l’émulateur mobile de base (/libs/wcm/mobile/components/emulators/base
).
Chaque composant qui étend l’émulateur mobile de base peut être sélectionné lors de la configuration d’un groupe d’appareils. Les émulateurs personnalisés sont ainsi facilement créés ou étendus.
Au moment de la requête en mode de modification, l’implémentation de l’émulateur est utilisée pour le rendu de la page.
Lorsque le modèle de la page repose sur le composant de page mobile, les fonctionnalités de l’émulateur sont automatiquement intégrées dans la page (via le head.jsp
du composant de page mobile).
Les groupes d’appareils mobiles fournissent une segmentation des appareils mobiles selon les caractéristiques fonctionnelles de chaque appareil. Un groupe d’appareils fournit les informations nécessaires à la création par émulateur sur l’instance de création et au rendu correct sur l’instance de publication : une fois que les auteurs ont ajouté du contenu à la page mobile et l’ont publié, la page peut être demandée sur l’instance de publication. Sur cette instance, au lieu de la vue en mode de modification de l’émulateur, la page de contenu est rendue selon l’un des groupes d’appareils configurés. La sélection du groupe d’appareils se fait en fonction de la détection des appareils mobiles. Le groupe d’appareils correspondant fournit alors les informations de style nécessaires.
Les groupes d’appareils sont définis comme des pages de contenu /etc/mobile/devices
et utilisent le modèle Groupe de périphériques mobiles. Celui-ci sert de modèle de configuration pour les définitions de groupe d’appareils sous la forme de pages de contenu. Ses caractéristiques principales sont les suivantes :
/libs/wcm/mobile/templates/devicegroup
/etc/mobile/groups/*
wcm/mobile/components/devicegroup
Lorsque vous créez un site mobile, vous devez affecter des groupes d’appareils au site. AEM propose trois groupes d’appareils en fonction des capacités de rendu HTML et JavaScript de l’appareil :
Téléphones portables pour les appareils comme le Sony Ericsson W800 avec prise en charge de HTML basique, mais pas des images ni de JavaScript.
Smartphones pour les appareils comme le Blackberry avec prise en charge du HTML basique et des images, mais pas de JavaScript.
Appareils tactiles pour les tablettes comme l’iPad avec prise en charge complète du HTML, des images, de JavaScript et de la rotation des appareils.
Dans la mesure où les émulateurs peuvent être associés à un groupe d’appareils (voir la section Création d’un groupe d’appareils), l’affectation d’un groupe d’appareils à un site permet aux auteurs de sélectionner les émulateurs associés au groupe d’appareils pour modifier la page.
Pour affecter un groupe d’appareils à votre site :
Dans votre navigateur, accédez à la console Site Admin.
Ouvrez la page racine du site pour appareils mobiles sous Sites web.
Ouvrez les propriétés de la page.
Sélectionnez l’onglet Mobile :
Lorsque les groupes d’appareils sont définis pour un site, ils sont hérités par toutes les pages du site.
Les filtres de groupe d’appareils définissent des critères fonctionnels pour déterminer si un appareil appartient ou non à un groupe. Lorsque vous créez un groupe d’appareils, vous pouvez sélectionner les filtres à utiliser pour évaluer les appareils.
Au moment de l’exécution, quand AEM reçoit une requête HTTP d’un appareil, chaque filtre associé à un groupe compare les caractéristiques de l’appareil avec des critères spécifiques. L’appareil est considéré comme appartenant au groupe lorsqu’il possède toutes les caractéristiques que le filtre impose. Les caractéristiques sont extraites de la base de données WURFL™.
Les groupes d’appareils peuvent utiliser aucun ou plusieurs filtres pour la détection des caractéristiques. De plus, un filtre peut être utilisé avec plusieurs groupes d’appareils. AEM propose un filtre par défaut qui détermine si l’appareil possède les caractéristiques sélectionnées pour un groupe :
Si le groupe d’appareils n’utilise pas de filtre, les caractéristiques sélectionnées configurées pour le groupe sont les seules que l’appareil doit posséder.
Pour plus d’informations, consultez la section Création de filtres de groupes d’appareils.
Créez un groupe d’appareils lorsque les groupes qu’AEM installe ne répondent pas à vos besoins.
Dans votre navigateur, accédez à la console Outils.
Créez une page sous Outils > Mobile >Groupes de périphériques. Dans la boîte de dialogue Créer une page :
Comme Titre, entrez Special Phones
.
Comme Nom, entrez special
.
Sélectionnez un Modèle de groupe de périphériques mobiles.
Cliquez sur Créer.
Dans CRXDE, ajoutez un fichier static.css contenant les styles du groupe d’appareils sous le nœud /etc/mobile/groups/special
.
Ouvrez la page Special Phones.
Pour configurer le groupe d’appareils, cliquez sur le bouton Modifier à côté de Paramètres.
Dans l’onglet Général :
BlackBerryZ10
Dans l’onglet Émulateurs :
Dans l’onglet Filtres :
Cliquez sur OK.
La boîte de dialogue de configuration du groupe d’appareils mobiles se présente comme suit :
Comme décrit précédemment, il est possible d’associer un CSS personnalisé à une page de groupe d’appareils, tout comme avec le CSS d’une page de conception. Ce CSS est utilisé pour influencer le rendu spécifique au groupe d’appareils du contenu de la page sur les instances de création et de publication. Ce CSS est alors automatiquement ajouté :
Utilisez des filtres et une bibliothèque de caractéristiques d’appareil pour déterminer les fonctions de l’appareil qui effectue la requête HTTP.
Créez un filtre de groupe d’appareils pour définir un ensemble d’exigences en termes de caractéristiques d’appareil. Créez autant de filtres que nécessaire pour cibler les groupes de caractéristiques d’appareils nécessaires.
Concevez vos filtres de sorte à pouvoir utiliser des combinaisons pour définir des groupes de caractéristiques. Généralement, certaines caractéristiques sont communes à différents groupes d’appareils. Par conséquent, vous pouvez utiliser certains filtres avec plusieurs définitions de groupe d’appareils.
Après avoir créé un filtre, vous pouvez l’utiliser dans la configuration du groupe.
Pour plus d’informations, accédez à Création de filtres de groupe d’appareils.
AEM utilise une version tronquée de la base de données WURFL™ pour interroger les caractéristiques des appareils, telles que la résolution d’écran ou la prise en charge de javascript, selon le User-Agent de l’appareil.
Le code XML de la base de données WURFL™ est représenté sous la forme de nœuds sous /var/mobile/devicespecs
en analysant le fichier wurfl.xml
sous /libs/wcm/mobile/devicespecs/wurfl.xml.
. L’extension aux nœuds se produit la première fois que le lot cq-mobile-core
est démarré.
Les caractéristiques des appareils sont stockées en tant que propriétés de nœud. Les nœuds représentent les modèles d’appareil. Vous pouvez utiliser des requêtes pour récupérer les caractéristiques d’un appareil ou son user-agent.
Puisque la base de données WURFL™ évolue, il faudra peut-être la personnaliser ou la remplacer. Pour mettre à jour la base de données des appareils mobiles, plusieurs options existent :
Lorsqu’un appareil accède à votre site pour appareils mobiles, AEM le détecte, le mappe à un groupe d’appareils d’après ses fonctions et diffuse un rendu de la page qui est adapté au groupe d’appareils. Le groupe d’appareils correspondant fournit les informations de style nécessaires. Les mappages peuvent être testés sur la page de test du User-Agent mobile :
https://localhost:4502/etc/mobile/useragent-test.html
La base de données WURFL™ tronquée installée avec AEM est une version antérieure au 30 août 2011. Si votre version de WURFL a été publiée après le 30 août 2011, assurez-vous que l’utilisation que vous en faites est conforme à votre licence.
Pour installer une base de données WURFL™, procédez comme suit :
/apps/wcm/mobile/devicespecs
.wurfl.xml
.AEM analyse automatiquement le fichier wurfl.xml
et met à jour les nœuds /var/mobile/devicespecs
.
Lorsque la base de données WURFL™ complète est activée, l’analyse et l’activation peuvent prendre quelques minutes. Vous pouvez consulter les journaux pour obtenir des informations sur la progression.
Ajoutez une chaîne user-agent en tant qu’expression régulière sous /apps/wcm/mobile/devicespecs/wurfl/regexp pour désigner un type d’appareil WURFL™ existant.
Dans CRXDE Lite, créez un nœud sous /apps/wcm/mobile/devicespecs/regexp, par exemple. apple_ipad_ver1.
Ajoutez les propriétés suivantes au nœud :
La configuration ci-dessus provoque le mappage des appareils pour lesquels le user-agent correspond à l’expression régulière fournie avec l’ID d’appareil WURFL™ apple_ipad_ver1, s’il existe.
Cette section explique comment utiliser la détection côté client d’AEM afin d’optimiser le rendu des pages ou de proposer au client des versions de site web secondaires.
AEM prend en charge la détection côté client d’appareils avec BrowserMap
. Dans AEM, BrowserMap
se présente comme une bibliothèque cliente sous /etc/clientlibs/browsermap
.
BrowserMap
offre trois alternatives pour fournir un site web secondaire à un client. Elles sont appliquées dans l’ordre suivant :
Pour plus d’informations sur l’intégration de la bibliothèque cliente, consultez la section Utilisation de bibliothèques HTML côté client.
Le service PageVariantsProvider
OSGi est capable de générer des liens secondaires pour les sites appartenant à la même famille. Pour configurer les sites concernés par le service, un nœud cq:siteVariant
doit être ajouté au nœud jcr:content
à la racine du site.
Le nœud cq:siteVariant
doit posséder les propriétés suivantes :
cq:childNodesMapTo
- Détermine avec quel attribut de l’élément de lien les nœuds enfants seront mappés. Il est recommandé d’organiser le contenu de votre site de manière à ce que les enfants du nœud racine représentent la racine d’une variante de langue de votre site web international (par exemple /content/mysite/de
, /content/mysite/en
), auquel cas la valeur de cq:childNodesMapTo
doit être hreflang
.cq:variantDomain
- Indique le domaine Externalizer
qui sera utilisé pour générer les URL absolues de variantes de page. Si cette valeur n’est pas définie, les variantes de page sont générées avec des liens relatifs.cq:variantFamily
- Indique à quelle famille de sites appartient ce site. Plusieurs rendus spécifiques à chaque appareil d’un même site web doivent appartenir à la même famille.media
- Stocke les valeurs de l’attribut media de l’élément link. Il est recommandé d’utiliser le nom du BrowserMap
enregistré avec DeviceGroups
, de sorte que la bibliothèque BrowserMap
puisse automatiquement rediriger les clients vers la bonne variante du site web.Lorsque la valeur de la propriété cq:variantDomain
d’un nœud cq:siteVariant
n’est pas vide, le service PageVariantsProvider
génère des liens absolus en utilisant cette valeur en tant que domaine configuré pour le service Externalizer
. Assurez-vous de configurer le service Externalizer
de manière à tenir compte de votre configuration.
Lorsque vous utilisez AEM, plusieurs méthodes permettent de gérer les paramètres de configuration pour ces services. Consultez la section Configuration d’OSGi pour plus de détails et connaître les pratiques recommandées.
Si vous ne souhaitez pas utiliser des liens secondaires, vous pouvez configurer une URL globale pour chaque DeviceGroup
. Nous vous recommandons de créer votre propre bibliothèque cliente qui intègre la bibliothèque cliente browsermap.standard
mais qui redéfinit les groupes d’appareils.
BrowserMap est conçu de telle sorte que les définitions de groupes d’appareils peuvent être remplacées en créant et en ajoutant un nouveau groupe d’appareils du même nom à l’objet BrowserMap
de votre bibliothèque cliente personnalisée.
Pour plus de détails, veuillez lire la section BrowserMap personnalisé.
Si aucun des mécanismes précédents n’a été utilisé pour indiquer un site secondaire de redirection à BrowserMap
, les sélecteurs qui utilisent les noms des DeviceGroups
sont ajoutés aux URL
, auquel cas vous devez fournir vos propres servlets. Ce sont eux qui géreront les requêtes.
Par exemple, un appareil qui accède à www.example.com/index.html
identifié comme un smartphone
par BrowserMap est redirigé vers www.example.com/index.smartphone.html.
.
Pour utiliser la bibliothèque cliente BrowserMap standard dans une page, vous devez inclure le fichier /libs/wcm/core/browsermap/browsermap.jsp
au moyen de la balise cq:include
dans la section head
de votre page.
<cq:include script="/libs/wcm/core/browsermap/browsermap.jsp" />
Outre l’ajout de la bibliothèque cliente BrowserMap
à vos fichiers JSP
, vous devez également ajouter une propriété de chaîne cq:deviceIdentificationMode
définie sur client-side
au nœud jcr:content
sous la racine de votre site web.
Si vous souhaitez personnaliser BrowserMap
en remplaçant les DeviceGroups
ou en ajoutant d’autres sondes, vous devez créer votre propre bibliothèque côté client à laquelle vous incorporez la bibliothèque côté client browsermap.standard
.
De plus, vous devez appeler manuellement la méthode BrowserMap.forwardRequest()
dans votre code JavaScript
.
Pour plus d’informations sur l’intégration de la bibliothèque cliente, consultez la section Utilisation de bibliothèques HTML côté client.
Une fois la bibliothèque cliente BrowserMap
personnalisée créée, nous proposons l’approche suivante :
Créez un fichier browsermap.jsp
dans votre application.
<%@include file="/libs/foundation/global.jsp" %>
<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<%@ page import="
com.day.cq.wcm.api.variants.PageVariant,
com.day.cq.wcm.api.variants.PageVariantsProvider,
com.day.cq.wcm.api.devicedetection.DeviceIdentificationMode,
com.day.cq.wcm.api.WCMMode"
%>
<%
final PageVariantsProvider p = sling.getService(PageVariantsProvider.class);
if(p == null) {
throw new IllegalStateException("Missing PageVariantsProvider service");
}
for(PageVariant v : p.getVariants(currentPage, slingRequest)) {
final String curVar = v.getAttributes().get("data-current-variant");
String media = v.getAttributes().get("media");
if (media != null) {
media = media.replaceAll(" ", "");
}
%>
<link
rel="alternate"
data-cq-role="site.variant"
title="<%= xssAPI.encodeForHTMLAttr(v.getTitle()) %>"
hreflang="<%= xssAPI.encodeForHTMLAttr(v.getAttributes().get("hreflang")) %>"
media="<%= xssAPI.encodeForHTMLAttr(media) %>"
href="<%= xssAPI.getValidHref(v.getURL()) %>"
<% if(curVar != null) { %> data-current-variant="<%= curVar %>"<% } %>
/>
<%
}
Boolean browserMapEnabled = true;
final DeviceIdentificationMode dim = sling.getService(DeviceIdentificationMode.class);
String[] selectors = slingRequest.getRequestPathInfo().getSelectors();
boolean isPortletRequest = false;
for (int i = 0; i < selectors.length; i++) {
if ("portlet".equals(selectors[i])) {
isPortletRequest = true;
break;
}
}
if (isPortletRequest) {
log.debug("Request was made by a portlet container - BrowserMap will not be embedded");
} else {
final WCMMode wcmMode = WCMMode.fromRequest(slingRequest);
boolean shouldIncludeClientLib = false;
if (WCMMode.EDIT != wcmMode && WCMMode.PREVIEW != wcmMode && WCMMode.DESIGN != wcmMode) {
if (dim != null) {
final String mode = dim.getDeviceIdentificationModeForPage(currentPage);
shouldIncludeClientLib = DeviceIdentificationMode.CLIENT_SIDE.equals(mode);
if (shouldIncludeClientLib) {
browserMapEnabled = (Boolean) request.getAttribute("browsermap.enabled");
if (browserMapEnabled == null) {
browserMapEnabled = true;
}
}
}
}
%>
<c:if test="<%= !browserMapEnabled %>">
<meta name="browsermap.enabled" content="false">
</c:if>
<c:if test="<%= shouldIncludeClientLib %>">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<cq:includeClientLib categories="browsermap.custom"/>
</c:if>
<%
}
%>
Ajoutez le fichier broswermap.jsp
à la section head.
<cq:include script="browsermap.jsp" />
Si vous souhaitez exclure la bibliothèque BrowserMap de certaines pages pour lesquelles vous n’avez pas besoin de détection de client, vous pouvez ajouter un attribut de requête :
<%
request.setAttribute("browsermap.enabled", false);
%>
Le script /libs/wcm/core/browsermap/browsermap.jsp
ajoutera ainsi une balise meta à la page pour empêcher BrowserMap
d’effectuer une détection :
<meta name="browsermap.enabled" content="false">
En principe, le script BrowserMap redirige toujours les internautes vers la version la mieux adaptée du site web, généralement vers la version bureau ou mobile, selon le cas.
Vous pouvez forcer un type d’appareil, peu importe sa requête, à tester une version particulière d’un site web en ajoutant le paramètre device
à l’URL. L’URL ci-dessous diffuse la version mobile du site web Geometrixx Outdoors.
https://localhost:4502/content/geometrixx-outdoors/en.html?wcmmode=disabled&device=smartphone
Le paramètre par défaut wcmmode
est défini sur disabled
afin de simuler le comportement d’une instance de publication.
La valeur remplacée est stockée dans un cookie afin que la navigation sur votre site web soit possible sans ajouter le paramètre device
à chaque URL
.
Par conséquent, vous devez appeler la même URL
avec la valeur device
définie sur browser
pour revenir à la version bureau du site web.
BrowserMap stocke la valeur device remplacée dans un cookie appelé BMAP_device
. La suppression de ce cookie garantit que CQ diffuse la version appropriée du site web en fonction de l’appareil (par exemple, la version bureau ou mobile).
AEM traite les requêtes émises par des appareils mobiles appartenant au groupe d’appareils tactiles comme suit :
Un iPad envoie une requête à l’instance de publication AEM, par ex. https://localhost:4503/content/geometrixx_mobile/en/products.html
.
AEM détermine si le site de la page demandée est un site pour appareils mobiles (en vérifiant si la page de premier niveau /content/geometrixx_mobile
étend le composant de page mobile). Si oui :
AEM vérifie les caractéristiques de l’appareil selon la valeur User-Agent définie dans l’en-tête de la requête.
AEM mappe les caractéristiques de l’appareil avec le groupe d’appareils et définit touch
comme sélecteur de groupe d’appareils.
AEM redirige la requête vers https://localhost:4503/content/geometrixx_mobile/en/products.touch.html.
.
AEM envoie la réponse à l’iPad :
products.touch.html
est diffusée de manière habituelle et peut être mise en cache.Vous pouvez obtenir des statistiques sur le nombre de requêtes effectuées sur le serveur AEM par des appareils mobiles. Le nombre de requêtes peut être décomposé :
Pour voir les statistiques :
La page Statistiques se présente comme suit :
La page Statistiques est créée la première fois qu’un appareil mobile accède à AEM et est détecté. Avant cela, elle n’est pas disponible.
Si vous devez générer une entrée dans les statistiques, vous pouvez procéder comme suit :
https://localhost:4502/content/geometrixx_mobile/en/products.html?wcmmode=disabled
La page Statistiques est désormais disponible.
Les pages mobiles peuvent généralement être mises en cache sur Dispatcher car les pages rendues pour un groupe d’appareils sont distinguées dans l’URL de la page par le sélecteur de groupe d’appareils, par exemple /content/mobilepage.touch.html
. Une requête vers une page mobile sans sélecteur n’est jamais mise en cache puisque, dans ce cas, la détection d’appareil fonctionne et redirige au final la page vers le groupe d’appareils correspondant (ou « nomatch » plus précisément). Une page mobile diffusée avec un sélecteur de groupe d’appareils est traitée par réécriture des liens. Tous les liens de la page sont réécrits de manière à contenir le sélecteur de groupe, empêchant ainsi la détection pour chaque clic sur une page déjà traitée.
Par conséquent, le cas de figure suivant est possible.
L’utilisateur « Alice » est redirigé vers coolpage.feature.html
et envoie cette URL à un ami « Robert » qui y accède avec un autre client appartenant au groupe d’appareils touch
.
Si coolpage.feature.html
est diffusée à partir d’un cache frontal, AEM ne peut pas analyser la requête pour détecter que le sélecteur mobile ne correspond pas au nouveau User-Agent, et Robert accède à un rendu inadéquat de la page.
Pour résoudre ce problème, vous pouvez inclure une interface de sélection simple sur les pages où les utilisateurs finaux peuvent remplacer le groupe d’appareils sélectionné par AEM. Dans l’exemple ci-dessus, un lien (ou une icône) sur la page permet à l’utilisateur final d’accéder à coolpage.touch.html
s’il pense que cette version de la page est mieux adaptée à son appareil.