Démarrage rapide : gestion des actions de contact (HTML)
[ Cet article est destiné aux développeurs de Windows 8.x et Windows Phone 8.x qui créent des applications Windows Runtime. Si vous développez une application pour Windows 10, voir la Documentation ]
Avec les espaces de noms Windows.UI.WebUI et Windows.ApplicationModel.Activation, vous pouvez fournir des données à une application quand elle est activée pour plusieurs actions de contact (Windows.ApplicationModel.Contacts.ContactLaunchActionVerbs). Ici, nous allons vous montrer comment gérer l’activation d’une application quand un utilisateur essaie d’appeler un contact, d’envoyer un message à un contact, ou d’obtenir une carte de l’adresse d’un contact. Ces actions d’activation de l’application peuvent se produire à partir d’une carte de visite obtenue avec Windows Search ou au sein de l’application. Une carte de visite peut être affichée dans l’application avec les méthodes ContactManager.ShowContactCard et ContactManager.ShowDelayLoadedContactCard. La gestion de l’activation de l’application pour les actions de contact est prise en charge à partir de Windows 8.1.
Ici, nous faisons référence à l’exemple de gestion des actions de contact. Cet exemple montre comment gérer l’activation de l’application pour les actions de contact via l’API de l’espace de noms Windows.UI.WebUI dans des applications du Windows Store.
L’exemple fournit trois scénarios :
- Gestion d’une activation pour passer un appel (ContactLaunchActionVerbs.call)
- Gestion d’une activation pour envoyer un message (ContactLaunchActionVerbs.message)
- Gestion d’une activation pour obtenir une carte d’une adresse (ContactLaunchActionVerbs.map)
Prérequis
- Nous vous recommandons de vous familiariser avec Microsoft Visual Studio et ses modèles connexes.
- Nous vous recommandons de vous familiariser avec le développement JavaScript.
Inclure les inscriptions de manifeste pour chaque action que l’application doit prendre en charge
Dans le fichier AppxManifest.xml ou le fichier Package.appxmanifest, mettez à jour l’élément Package pour qu’il accepte le schéma de manifeste Windows 8.1 et ajoutez les inscriptions de manifeste pour chaque action que l’application doit prendre en charge. Ces inscriptions permettent à l’application d’être lancée quand l’une des actions de contact ou l’un des schémas de protocole se produisent.
<Package xmlns="https://schemas.microsoft.com/appx/2010/manifest" xmlns:m2="https://schemas.microsoft.com/appx/2013/manifest">
.
.
<Extensions>
<Extension Category="windows.protocol">
<Protocol Name="tel"/>
</Extension>
<m2:Extension Category="windows.contact">
<m2:Contact>
<m2:ContactLaunchActions>
<m2:LaunchAction Verb="call">
<m2:ServiceId>telephone</m2:ServiceId>
</m2:LaunchAction>
<m2:LaunchAction Verb="message">
<m2:ServiceId>skype.com</m2:ServiceId>
</m2:LaunchAction>
<m2:LaunchAction Verb="map"/>
</m2:ContactLaunchActions>
</m2:Contact>
</m2:Extension>
</Extensions>
Déterminer le scénario à exécuter
L’application est lancée quand le type d’activation contact ou protocol Windows.ApplicationModel.Activation.ActivationKindse produit.
Le scénario à exécuter est déterminé par l’action de contact effectuée. Par exemple, si l’utilisateur clique sur Appeler sur le numéro de téléphone d’un contact, l’action d’événement est égale à ContactLaunchActionVerbs.call, et le scénario à exécuter est S1-Call.
Dans la mesure où nous recommandons que les applications qui implémentent l’action Windows.Contact.call implémentent également la prise en charge de tel: protocol, vous devez également exécuter le scénario S1-Call quand protocol Windows.ApplicationModel.Activation.ActivationKind est détecté.
function activated(eventObject) {
var url = null;
var arg = null;
if (eventObject.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.contact) {
// If activated for a contact, launch the appropriate action handling scenario.
arg = eventObject.detail;
if (eventObject.detail.verb === Windows.ApplicationModel.Contacts.ContactLaunchActionVerbs.call) {
url = scenarios[0].url;
} else if (eventObject.detail.verb === Windows.ApplicationModel.Contacts.ContactLaunchActionVerbs.message) {
url = scenarios[1].url;
} else if (eventObject.detail.verb === Windows.ApplicationModel.Contacts.ContactLaunchActionVerbs.map) {
url = scenarios[2].url;
} else {
WinJS.log && WinJS.log("This app can't handle the contact action verb it was activated for.", "sample", "error");
return;
}
} else if (eventObject.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.protocol) {
// If activated for a protocol, launch the call scenario
arg = eventObject.detail;
url = scenarios[0].url;
} else if (eventObject.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {
// Otherise, navigate to either the first scenario or to the last running scenario
// before suspension or termination.
url = WinJS.Application.sessionState.lastUrl || scenarios[0].url;
}
if (url !== null) {
// Use setPromise to indicate to the system that the splash screen must not be torn down
// until after processAll and navigate complete asynchronously.
eventObject.setPromise(WinJS.UI.processAll().then(function () {
return WinJS.Navigation.navigate(url, arg);
}));
}
}
WinJS.Navigation.addEventListener("navigated", function (eventObject) {
var url = eventObject.detail.location;
var host = document.getElementById("contentHost");
// Call unload method on current scenario, if there is one
host.winControl && host.winControl.unload && host.winControl.unload();
WinJS.Utilities.empty(host);
eventObject.detail.setPromise(WinJS.UI.Pages.render(url, host, eventObject.detail.state).then(function () {
WinJS.Application.sessionState.lastUrl = url;
}));
});
Fournir les données à l’application quand elle est activée avec un appel
Déterminez si un événement d’appel de contact ou un événement d’appel tel: protocol se produit.
Les données passées pour l’événement d’appel de contact sont ServiceId et ServiceUserId. L’exemple utilise le numéro de téléphone du contact sélectionné et l’affiche, par exemple, « Activation d’appel reçue. Le numéro de téléphone à appeler est le (555) 555-0100. »
Les données passées pour l’événement d’appel tel: protocol sont URI schemeName et path. L’exemple utilise le numéro de téléphone du contact sélectionné et l’affiche, par exemple, « Tel:activation reçu. Le numéro de téléphone à appeler est le (555) 555-0100. »
(function () {
"use strict";
var page = WinJS.UI.Pages.define("/html/S1-Call.html", {
processed: function (element, callArgs) {
// callArgs is the parameter passed to navigation in the activated event handler.
if (callArgs) {
if (callArgs.serviceId) {
if (callArgs.serviceId === "telephone") {
WinJS.log && WinJS.log("Call activation was received. The phone number to call is " + callArgs.serviceUserId + ".", "sample", "status");
} else {
WinJS.log && WinJS.log("This app doesn't support calling by using the " + callArgs.serviceId + " service.", "sample", "error");
}
} else if (callArgs.uri) {
if (callArgs.uri.schemeName === "tel") {
WinJS.log && WinJS.log("Tel: activation was received. The phone number to call is " + callArgs.uri.path + ".", "sample", "status");
} else {
WinJS.log && WinJS.log("This app doesn't support the " + callArgs.uri.schemeName + " protocol.", "sample", "error");
}
}
}
},
ready: function (element, options) {
}
});
})();
Fournir les données à l’application quand elle est activée avec l’envoi d’un message
Les données passées pour l’événement d’envoi de message à un contact sont ServiceId et ServiceUserId. L’exemple utilise l’id utilisateur du contact pour ce service et l’affiche, par exemple « Send message activation was received. The service to use is contoso.com. The user ID to message is userid10 ».
(function () {
"use strict";
var page = WinJS.UI.Pages.define("/html/S2-Send-Message.html", {
processed: function (element, messageArgs) {
// messageArgs is the parameter passed to navigation in the activated event handler.
if (messageArgs) {
WinJS.log && WinJS.log("Send message activation was received. The service to use is " + messageArgs.serviceId + ". The user ID to message is " +
messageArgs.serviceUserId + ".", "sample", "status");
}
},
ready: function (element, options) {
}
});
})();
Fournir les données à l’application quand elle est activée avec une demande de carte
Les données passées pour l’événement de demande de carte de contact sont ContactAddress. L’exemple utilise l’adresse postale du contact et l’affiche, par exemple, « Map address activation was received. The street address to map is One Microsoft Way ».
(function () {
"use strict";
var page = WinJS.UI.Pages.define("/html/S3-Map-Address.html", {
processed: function (element, mapArgs) {
// mapArgs is the parameter passed to navigation in the activated event handler.
if (mapArgs) {
var address = mapArgs.address;
WinJS.log && WinJS.log("Map address activation was received. The street address to map is " +
(address.streetAddress ? address.streetAddress : "unspecified") + ".", "sample", "status");
}
},
ready: function (element, options) {
}
});
})();
Récapitulatif et étapes suivantes
Vous disposez désormais des connaissances de base pour gérer l’activation d’une application pour des actions de contact. Téléchargez l’exemple de gestion des actions de contact dans la galerie de code pour obtenir l’exemple complet de gestion de l’activation d’une application pour les actions de contact.