UssdSession.SendMessageAndGetReplyAsync(UssdMessage) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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);