Compartir a través de


UssdSession.SendMessageAndGetReplyAsync(UssdMessage) Método

Definición

Envía un mensaje a una sesión de USSD y devuelve un controlador para recuperar la respuesta de forma asincrónica.

Nota

Esta funcionalidad solo está disponible para las aplicaciones de operadores móviles y las aplicaciones para UWP con acceso con privilegios por parte de los operadores de red móvil.

Si quieres usar esta API y publicar tu aplicación en Microsoft Store, necesitarás aprobación especial. Para obtener más información, consulte la sección Funcionalidades restringidas del tema Declaraciones de funcionalidad de la aplicación .

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

Mensaje que se va a enviar a la sesión USSD.

Devoluciones

Un controlador asincrónico para recuperar la respuesta USSD al mensaje enviado.

Requisitos de Windows

Características de aplicaciones
cellularDeviceControl cellularDeviceIdentity

Comentarios

El mensaje USSD que se envía puede ser una solicitud o una respuesta. La operación es asincrónica y emite una sola devolución de llamada mediante la interfaz IAsyncOperation(UssdReply) al finalizar. Puede cancelar la operación asincrónica mediante la interfaz IAsyncOperation(UssdReply).

Cuando una aplicación que usa la proyección de C++ de SendMessageAndGetReplyAsync libera su última referencia al objeto UssdSession desde esa devolución de llamada, SendMessageAndGetReplyAsync puede bloquearse. Por lo tanto, las aplicaciones deben asegurarse de que la devolución de llamada no se libere desde SendMessageAndGetReplyAsync. Una manera de hacerlo es crear otra operación asincrónica (por ejemplo, un temporizador) desde dentro de la devolución de llamada cuya devolución de llamada de finalización se usa para liberar el objeto de sesión pasando una referencia al objeto de sesión.

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

Se aplica a