Partager via


Envoyer des SMS à l’aide de jeux de caractères personnalisés

Si vous avez besoin d’accéder à des unités de données de protocole de message brutes (PDU) pour réaliser des scénarios qui ne sont pas pris en charge par l’interface en mode texte, Windows 8, Windows 8.1 et Windows 10 activer l’envoi et la lecture en mode PDU des messages SMS reçus.

Vous devrez peut-être utiliser l’interface SMS en mode PDU dans les cas suivants :

  • Pour envoyer ou lire des SMS reçus à l’aide d’une table de décalage unique de langue nationale ou d’une table de décalage de verrouillage de la langue nationale, comme défini dans 3GPP TS 23.038.

  • Pour envoyer des SMS en plusieurs parties à l’aide de jeux de caractères différents pour chaque segment.

Exemple de code JavaScript pour envoyer des messages SMS à l’aide de l’interface en mode PDU

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

Exemple de code JavaScript pour lire les messages SMS reçus à l’aide de l’interface en mode PDU

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

Développement d’applications SMS