UssdSession.SendMessageAndGetReplyAsync(UssdMessage) Metodo

Definizione

Invia un messaggio a una sessione USSD e restituisce un gestore per recuperare la risposta in modo asincrono.

Nota

Questa funzionalità è disponibile solo per le app dell'operatore di telefonia mobile e le app UWP con accesso con privilegi da parte degli operatori di rete mobile.

Se vuoi usare questa API e pubblicare la tua app in Microsoft Store, avrai bisogno di un'approvazione speciale. Per altre informazioni, vedere la sezione Funzionalità con restrizioni nell'argomento Dichiarazioni di funzionalità dell'app .

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)

Parametri

message
UssdMessage

Messaggio da inviare alla sessione USSD.

Restituisce

Gestore asincrono per recuperare la risposta USSD al messaggio inviato.

Requisiti Windows

Funzionalità dell'app
cellularDeviceControl cellularDeviceIdentity

Commenti

Il messaggio USSD inviato può essere una richiesta o una risposta. L'operazione è asincrona e genera un singolo callback usando l'interfaccia IAsyncOperation(UssdReply) al completamento. È possibile annullare l'operazione asincrona usando l'interfaccia IAsyncOperation(UssdReply).

Quando un'applicazione che usa la proiezione C++ di SendMessageAndGetReplyAsync rilascia l'ultimo riferimento all'oggetto UssdSession dall'interno di tale callback, SendMessageAndGetReplyAsync potrebbe bloccarsi. Pertanto, le applicazioni devono assicurarsi che il callback non venga rilasciato da SendMessageAndGetReplyAsync. Un modo per eseguire questa operazione consiste nel creare un'altra operazione asincrona ,ad esempio un timer, dall'interno del callback il cui callback di completamento viene utilizzato per rilasciare l'oggetto sessione passandolo un riferimento all'oggetto sessione.

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

Si applica a