UssdSession.SendMessageAndGetReplyAsync(UssdMessage) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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);