UssdSession.SendMessageAndGetReplyAsync(UssdMessage) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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);