Compartilhar via


UssdSession.SendMessageAndGetReplyAsync(UssdMessage) Método

Definição

Envia uma mensagem para uma sessão USSD e retorna um manipulador para recuperar a resposta de forma assíncrona.

Observação

Essa funcionalidade está disponível apenas para aplicativos de operadora móvel e aplicativos UWP com acesso privilegiado por operadoras de rede móvel.

Se você quiser usar essa API e publicar seu aplicativo na Microsoft Store, precisará de aprovação especial. Para obter mais informações, consulte a seção Funcionalidades restritas no tópico Declarações de funcionalidade do aplicativo.

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)

Parâmetros

message
UssdMessage

A mensagem a ser enviada para a sessão USSD.

Retornos

Um manipulador assíncrono para recuperar a resposta USSD à mensagem enviada.

Requisitos do Windows

Funcionalidades do aplicativo
cellularDeviceControl cellularDeviceIdentity

Comentários

A mensagem USSD que está sendo enviada pode ser uma solicitação ou uma resposta. A operação é assíncrona e emite um único retorno de chamada usando a interface IAsyncOperation(UssdReply) após a conclusão. Você pode cancelar a operação assíncrona usando a interface IAsyncOperation(UssdReply).

Quando um aplicativo que usa a projeção C++ de SendMessageAndGetReplyAsync lança sua última referência ao objeto UssdSession de dentro desse retorno de chamada, SendMessageAndGetReplyAsync pode travar. Portanto, os aplicativos devem garantir que o retorno de chamada não seja liberado de dentro de SendMessageAndGetReplyAsync. Uma maneira de fazer isso é criar outra operação assíncrona (por exemplo, um temporizador) de dentro do retorno de chamada cujo retorno de chamada de conclusão é usado para liberar o objeto de sessão passando-o uma referência ao objeto de sessão.

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

Aplica-se a