UssdSession.SendMessageAndGetReplyAsync(UssdMessage) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Envoie un message à une session USSD et retourne un gestionnaire pour récupérer la réponse de manière asynchrone.
Notes
Cette fonctionnalité n’est disponible que pour les applications d’opérateur mobile et les applications UWP disposant d’un accès privilégié par les opérateurs de réseau mobile.
Si vous souhaitez utiliser cette API et publier votre application dans le Microsoft Store, vous aurez besoin d’une approbation spéciale. Pour plus d’informations, consultez la section Fonctionnalités restreintes dans la rubrique Déclarations de fonctionnalités d’application .
public:
virtual IAsyncOperation<UssdReply ^> ^ SendMessageAndGetReplyAsync(UssdMessage ^ message) = SendMessageAndGetReplyAsync;
IAsyncOperation<UssdReply> SendMessageAndGetReplyAsync(UssdMessage const& message);
public IAsyncOperation<UssdReply> SendMessageAndGetReplyAsync(UssdMessage message);
function sendMessageAndGetReplyAsync(message)
Public Function SendMessageAndGetReplyAsync (message As UssdMessage) As IAsyncOperation(Of UssdReply)
Paramètres
- message
- UssdMessage
Message à envoyer à la session USSD.
Retours
Gestionnaire asynchrone pour récupérer la réponse USSD au message envoyé.
Configuration requise pour Windows
Fonctionnalités de l’application |
cellularDeviceControl
cellularDeviceIdentity
|
Remarques
Le message USSD envoyé peut être une demande ou une réponse. L’opération est asynchrone et émet un rappel unique à l’aide de l’interface IAsyncOperation(UssdReply) à l’achèvement. Vous pouvez annuler l’opération asynchrone à l’aide de l’interface IAsyncOperation(UssdReply).
Lorsqu’une application utilisant la projection C++ de SendMessageAndGetReplyAsync libère sa dernière référence à l’objet UssdSession à partir de ce rappel, SendMessageAndGetReplyAsync peut se bloquer. Par conséquent, les applications doivent s’assurer que le rappel n’est pas libéré à partir de SendMessageAndGetReplyAsync. Une façon de procéder consiste à créer une autre opération asynchrone (par exemple, un minuteur) à partir du rappel dont le rappel d’achèvement est utilisé pour libérer l’objet session en lui transmettant une référence à l’objet session.
#include <winrt/Windows.System.Threading.h>
using namespace winrt;
using namespace Windows::System::Threading;
...
auto timerDelegate = [ussdSession](ThreadPoolTimer const& timer) {};
Windows::Foundation::TimeSpan delay{ std::chrono::seconds(1) };
ThreadPoolTimer timer{ ThreadPoolTimer::CreateTimer(TimerElapsedHandler(timerDelegate), delay) };
auto timerDelegate = [ussdSession](Windows::System::Threading::ThreadPoolTimer^ timer) {};
Windows::Foundation::TimeSpan delay;
delay.Duration = 1; // non-zero value
Windows::System::Threading::ThreadPoolTimer^ timer =
Windows::System::Threading::ThreadPoolTimer::CreateTimer(ref new
Windows::System::Threading::TimerElapsedHandler(timerDelegate), delay);