UssdSession.SendMessageAndGetReplyAsync(UssdMessage) 方法

定義

將訊息傳送至 USSD 會話,並傳回處理常式以非同步方式擷取回復。

注意

這項功能僅適用于行動電信業者提供特殊許可權存取權的電信業者應用程式和 UWP 應用程式。

如果您想要使用此 API 並將您的應用程式發佈至 Microsoft Store,則需要特殊核准。 如需詳細資訊,請參閱應用程式功能宣告主題中的受限制功能一節。

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)

參數

message
UssdMessage

要傳送至 USSD 會話的訊息。

傳回

用來擷取已傳送訊息之 USSD 回應的非同步處理常式。

Windows 需求

應用程式功能
cellularDeviceControl cellularDeviceIdentity

備註

正在傳送的 USSD 訊息可以是要求或回應。 作業是非同步,並在完成時使用 IAsyncOperation (UssdReply) 介面發出單一回呼。 您可以使用 IAsyncOperation (UssdReply) 介面來取消非同步作業。

當使用 SendMessageAndGetReplyAsync 的 C++ 投影的應用程式從該回呼內釋放 UssdSession 物件的最後一個參考時,SendMessageAndGetReplyAsync 可能會停止回應。 因此,應用程式必須確定不會從 SendMessageAndGetReplyAsync 內釋放回呼。 這樣做的其中一種方法是建立另一個非同步作業 (,例如,計時器) 從回呼內建立,其完成回呼是用來釋放會話物件的參考,方法是將參考傳遞給會話物件。

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

適用於