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

适用于