다음을 통해 공유


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

SMS 앱 개발