UssdSession.SendMessageAndGetReplyAsync(UssdMessage) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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);