Freigeben über


Senden von SMS mithilfe benutzerdefinierter Zeichensätze

Wenn Sie Zugriff auf Unformatierte Nachrichtenprotokolldateneinheiten (Raw Message Protocol Data Units, PDU) benötigen, um Szenarien zu erreichen, die von der Textmodusschnittstelle nicht unterstützt werden, Windows 8, Windows 8.1 und Windows 10 das Senden und Lesen empfangener SMS-Nachrichten im PDU-Modus aktivieren.

Möglicherweise müssen Sie in den folgenden Fällen die SMS-Schnittstelle im PDU-Modus verwenden:

  • So senden oder lesen Sie empfangene SMS mithilfe einer Nationalen Sprach-Single Shift-Tabelle oder einer National Language Locking Shift Table, wie in 3GPP TS 23.038 definiert.

  • So senden Sie mehrteilige SMS mit unterschiedlichen Zeichensätzen für jedes Segment.

JavaScript-Codebeispiel zum Senden von SMS-Nachrichten mithilfe der PDU-Modus-Schnittstelle

function smsDevicePDUSend()
{
  if (smsDevice !== null)
  {
    // Defines a binary message
    var smsMessage = new Windows.Devices.Sms.SmsBinaryMessage();
    var messsagePdu = “0011000B914152828377F90000AA0CC8F71D14969741F977FD07”;
    var messagePduByteArray = hexToByteArray(messsagePdu);
    smsMessage.setData(messagePduByteArray);

    if (smsDevice.cellularClass === Windows.Devices.Sms.CellularClass.gsm)
    {
      smsMessage.format = Windows.Devices.Sms.SmsDataFormat.gsmSubmit;
    }
    else
    {
      smsMessage.format = Windows.Devices.Sms.SmsDataFormat.cdmaSubmit;
    }
    var sendSmsMessageOperation = smsDevice.sendMessageAsync(smsMessage);

    sendSmsMessageOperation.done(function (reply) {
      WinJS.log("Sent message in PDU format", "sample", "status");
    }, errorCallback);
}

// Used to convert hex PDU to byte array for sending SMS using PDU //mode
function hexToByteArray(hexString)
{
  var result = [];
  var hexByte = "";
  var decByte = 0;
  for (var i = 0; i < hexString.length; i = i + 2) {
    hexByte = hexString.substring(i, i + 2);
    decByte = parseInt(hexByte, 16);
    result.push(decByte);
  }
  return result;
}

JavaScript-Codebeispiel zum Lesen empfangener SMS-Nachrichten mithilfe der PDU-Modus-Schnittstelle

function smsDeviceRead()
{
  try
  {
    if (smsDevice !== null)
    {
      var messageStore = smsDevice.messageStore;
      var messageID = “1” // select a Message Id to read 

      // Check for a valid ID number
      if (isNaN(messageID) || messageID < 1 || messageID > messageStore.maxMessages)
      {
        WinJS.log("Invalid ID number", "sample", "error");
        return;
     }

     var getSmsMessageOperation = messageStore.getMessageAsync(messageID);

     // Display message when get is completed
     getSmsMessageOperation.done(smsMessageReadSuccess, errorCallback);
     } 
  }
  catch (err) {
    // handle error
  }
}

function smsMessageReadSuccess(smsMessage)
{
  try
  {
    if (smsMessage instanceof SmsBinaryMessage) {
    var format  = smsMessage.format;
    var pduData = smsMessage.getData(); // byte array 
  }
  catch (err)
  {
    WinJS.log("SMS did not set up: " + err, "sample", "error");
  }
}

Entwickeln von SMS-Apps