UssdSession.SendMessageAndGetReplyAsync(UssdMessage) Methode

Definition

Sendet eine Nachricht an eine USSD-Sitzung und gibt einen Handler zurück, um die Antwort asynchron abzurufen.

Hinweis

Diese Funktionalität ist nur für Apps von Mobilfunkanbietern und UWP-Apps verfügbar, die privilegierten Zugriff von Mobilfunknetzbetreibern erhalten.

Wenn Sie diese API verwenden und Ihre App im Microsoft Store veröffentlichen möchten, benötigen Sie eine spezielle Genehmigung. Weitere Informationen finden Sie im Abschnitt Eingeschränkte Funktionen im Thema App-Funktionsdeklarationen .

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)

Parameter

message
UssdMessage

Die Nachricht, die an die USSD-Sitzung gesendet werden soll.

Gibt zurück

Ein asynchroner Handler zum Abrufen der USSD-Antwort auf die gesendete Nachricht.

Windows-Anforderungen

App-Funktionen
cellularDeviceControl cellularDeviceIdentity

Hinweise

Die gesendete USSD-Nachricht kann entweder eine Anforderung oder eine Antwort sein. Der Vorgang ist asynchron und gibt nach Abschluss einen einzelnen Rückruf über die IAsyncOperation(UssdReply) -Schnittstelle aus. Sie können den asynchronen Vorgang mithilfe der IAsyncOperation(UssdReply) -Schnittstelle abbrechen.

Wenn eine Anwendung, die die C++-Projektion von SendMessageAndGetReplyAsync verwendet, ihren letzten Verweis auf das UssdSession-Objekt in diesem Rückruf freigibt, kann SendMessageAndGetReplyAsync hängen bleiben. Daher müssen Anwendungen sicherstellen, dass der Rückruf nicht in SendMessageAndGetReplyAsync freigegeben wird. Eine Möglichkeit besteht darin, einen weiteren asynchronen Vorgang (z. B. einen Timer) innerhalb des Rückrufs zu erstellen, dessen Abschlussrückruf zum Freigeben des Sitzungsobjekts verwendet wird, indem ein Verweis auf das Sitzungsobjekt übergeben wird.

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

Gilt für: