SMS 디바이스 열거
모바일 광대역 SMS 플랫폼은 첫 번째 SMS 지원 모바일 광대역 디바이스를 얻거나 모든 SMS 지원 모바일 광대역 디바이스 목록을 가져오는 기능을 제공합니다. 다음 샘플 코드에서는 기본 SMS 디바이스 및 특정 디바이스를 사용하여 SMS 개체를 인스턴스화하는 방법을 보여 드립니다.
참고 Windows 8, Windows 8.1 또는 Windows 10 C# 또는 C++를 사용하는 앱에서는 GetDefaultAsync 또는 FromIdAsync를 호출하는 SmsDevice 개체의 첫 번째 사용이 STA 스레드에 있어야 합니다. MTA 스레드에서 호출하면 정의되지 않은 동작이 발생할 수 있습니다.
기본 SMS 디바이스를 사용하는 JavaScript 코드 예제
var smsDevice = new Windows.Devices.Sms.SmsDevice.getDefault();
try
{
var smsDeviceOperation = Windows.Devices.Sms.SmsDevice.getDefaultAsync();
smsDeviceOperation.done(smsDeviceReceived, errorCallback);
}
catch (err)
{
// handle error
}
모든 SMS 디바이스를 열거하는 JavaScript 코드 예제
Windows.Devices.Enumeration.DeviceInformation.findAllAsync(Windows.Devices.Sms.SmsDevice.getDeviceSelector()).then(function (smsdevices)
{
if (smsdevices.length > 0)
{
// for simplicity we choose the first device
var smsDeviceId = smsdevices[0].Id;
var smsDeviceOperation = Windows.Devices.Sms.SmsDevice.fromIdAsync(smsNotificationDetails.deviceId);
smsDeviceOperation.done(function (smsDeviceResult)
{
smsDevice = smsDeviceResult;
}, errorCallback);
}
}
SMS 디바이스 액세스 오류 검색
앱에 SMS에 대한 액세스 권한이 없기 때문에 SMS 디바이스 열거에 실패했는지 감지할 수 있습니다. 이는 사용자가 앱에 대한 액세스를 명시적으로 거부하거나 디바이스 메타데이터가 앱에 대한 액세스 권한을 부여하지 않은 경우에 발생할 수 있습니다.
SMS 디바이스 액세스 오류를 검색하는 JavaScript 코드 예제
Windows.Devices.Enumeration.DeviceInformation.findAllAsync(Windows.Devices.Sms.SmsDevice.getDeviceSelector()).then(function (smsdevices)
{
if (smsdevices.length > 0)
{
// for simplicity we choose the first device
var smsDeviceId = smsdevices[0].Id.slice(startIndex,endIndex + 1);
var smsDeviceOperation = Windows.Devices.Sms.SmsDevice.fromIdAsync(smsNotificationDetails.deviceId);
smsDeviceOperation.done(function (smsDeviceResult)
{
smsDevice = smsDeviceResult;
}, errorCallback);
// detect if SMS access is denied due to user not granting app consent to use SMS or if metadata is missing or invalid.
}
function errorCallback(error)
{
WinJS.log(error.name + " : " + error.description, "sample", "error");
// If the error was caused due to access being denied to this app
// then the HResult is set to E_ACCESSDENIED (0x80007005)
// var hResult = hex(error.number);
}
function hex(nmb)
{
if (nmb >= 0)
{
return nmb.toString(16);
}
else
{
return (nmb + 0x100000000).toString(16);
}
}