Partager via


UssdSession.SendMessageAndGetReplyAsync(UssdMessage) Méthode

Définition

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);

S’applique à