This is an archived page. It's not actively maintained.

Mobile Connection

Non-standard
This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.

This API is available on Firefox OS for internal applications only.

Sum√°rio

Essa API tem 2 propósitos:

  • Dar acesso a informa√ß√Ķes detalhadas sobre os estados atuais da conex√£o m√≥vel do dispositivo
  • Dar acesso a uma capacidade espec√≠fica junto com ICC (o cart√£o SIM/RUIM)

Como essa API pode acessar funcionalidades que podem ter um impacto no plano m√≥vel assinado pelo usu√°rio (algumas funcionalidades pode ter custo para utilizar ou causar danos ao ICC), √© restrita para aplica√ß√Ķes certificadas apenas.

O ponto inicial principal dessa API √© a propriedade navigator.mozMobileConnection que √© uma inst√Ęncia da interface MozMobileConnection.

Estado da conexão móvel

O estado da conex√£o m√≥vel √© dividida em dois: de um lado a conex√£o voice, do outro conex√£o  data. O dado relacionado a cada tipo de conex√£o √© acess√≠vel atrav√©s pelas propriedades MozMobileConnection.voice e MozMobileConnection.data que ambas retornar√£o o objeto MozMobileConnectionInfo.

Esses objetos permitem acesso a todas as informa√ß√Ķes relacionadas a qualidade da rede (signal strength, quality of the signal, posi√ß√£o das network's cells, restricted usage, roaming, etc.), e relacionado √†  the carrier operating the network.

var cnx = navigator.mozMobileConnection;

console.log("The voice operator is " + cnx.voice.network.longName);

if (cnx.voice.connected) {
  console.log("The signal has a strength of " + (+cnx.voice.relSignalStrength) + "%");
} else {
  console.log("The state of the connection is: " + cnx.voice.state);
}

Funcionalidades ICC

As funcionalidades disponíveis para o ICC pode ser dividida dentro de duas categorias: o gerenciamento do próprio ICC e a utilização do comando integrado disponível dentro do STK (SIM Application Toolkit).

A√ß√Ķes B√°sicas

O MozMobileConnection fornece métodos para lidar com comportamentos comuns no ICCs.

Nota: All original methods from the MozMobileConnection interface are fully asynchronous. They all return a DOMRequest object which has an onsuccess and onerror event handler to handle the success or failure of the method call.

Bloqueio do Cart√£o

Enquanto o cart√£o estiver bloqueado, o usu√°rio √© incapaz de utilizar uma rede m√≥vel. √Č poss√≠vel gerenciar o bloqueio do cart√£o com os m√©todos getCardLock(), setCardLock(), e unlockCardLock().

Se getCardLock() permite pegar algumas informa√ß√Ķes detalhadas sobre o bloqueio, tamb√©m poss√≠vel ter informa√ß√£o r√°pida sobre o bloqueio atrav√©s MozMobileConnection.cardState que retorna uma string representando o estado atual do bloqueio.

Nota: Even if the state change requests are successfully handled, it does not mean that the operations are necessarily successful. For that reason, any change in the card state is tracked independently through events:

var cnx = navigator.mozMobileConnection;

function unlockCard() {
  var unlockOptions = {
    lockType: "pin",
    pin     : prompt("Please, enter your PIN")
  }

  var unlock = cnx.unlockCardLock(unlockOptions);

  unlock.onsuccess = function () {
    console.log("The card has successfully handled the PIN number.");

    if (this.result.success === false) {
      if (this.result.retryCount > 0) {
        console.log("But you mistyped your PIN, you have " + this.result.retryCount + " tries left.");
      } else {
        console.log("But your card is hard locked, you need to contact your carrier to get a special unlocking code.");
      }
    }
  }

  unlock.onerror = function () {
    console.log("Hu! Something goes very wrong!")
  }
}

cnx.addEventListener('icccardlockerror', function () {
  // In case of error, ask the user for his PIN again
  unlockCard();
});

cnx.addEventListener('cardsatechange', function () {
  // In case the card state change and required to be unlocked
  if (cnx.cardState === 'pinRequired') {
    unlockCard();
  }
}

// First call to unlockCard if required
if (cnx.cardState === 'pinRequired') {
  unlockCard();
}

Mensagens MMI

Mensagens MMI s√£o c√≥digos leg√≠veis para humanos que, uma vez digitado no teclado do aparelho, permite disparo de a√ß√Ķes espec√≠ficas do RIL ou pegar resposta da rede pela requisi√ß√£o USSD. Um exemplo comum √© digitar um c√≥digo curto para receber n√ļmero IMEI do aparelho.

Essas mensagens são enviadas utilizando o método MozMobileConnection.sendMMI() (e pode ser cancelado com cancelMMI()). Mesmo com isso irá retornar um objeto DOMRequest, a resposta para este tipo de mensagem é manuseada de duas maneiras:

  • Se o c√≥digo MMI necessita enviar uma requisi√ß√£o USSD, o success da requesi√ß√£o significa que o RIL foi processado com sucesso e enviou a requisi√ß√£o USSD para a rede. Por√©m, a resposta da rede √© reportada atrav√©s do evento ussdreceived.
  • Se o c√≥digo MMI n√£o for associado com o USSD mas com outra requisi√ß√£o RIL, seu resultado, se um for necess√°rio, √© enviado pelo retorno requisitado success ou error.
var cnx = navigator.mozMobileConnection;

cnx.addEventHandler('ussdreceived', function (evt) {
  console.log('Network message: ' + evt.data.message);
});

var MMIRequest = cnx.sendMMI(prompt('Provide a valid MMI'));

MMIRequest.onerror = function() {
  console.log("Mmmh... Something goes wrong.");
}

Op√ß√Ķes encaminhamento de chamada

Op√ß√Ķes de encaminhamento permite definir como uma liga√ß√£o pode ou n√£o ser encaminhada para outro n√ļmero de telefone.

Essas op√ß√Ķes s√£o manuseadas com os m√©todos getCallForwardingOption() e setCallForwardingOption().

var options = {
  action      : MozMobileCFInfo.CALL_FORWARD_ACTION_ENABLE,
  reason      : MozMobileCFInfo.CALL_FORWARD_REASON_UNCONDITIONAL,
  serviceClass: MozMobileConnectionInfo.ICC_SERVICE_CLASS_VOICE,
  number      : prompt('To which phone number would you wish to forward the calls?'),
  timeSeconds : 5
};

var setOption = navigator.mozMobileConnection.setCallForwardingOption(options);

setOption.onsuccess = function () {
  console.log('Options successfully set');
}

setOption.onerror = function () {
  console.log('Unable to set options: ' + this.error.name);
}

Comandos STK

Os comandos STK dependem em v√°rios fatores (operadoras, modelos de chips, etc.) mas podem sempre ser acessados pela propriedade MozMobileConnection.icc que retorna um objeto MozIccManager.

Aten√ß√£o: √Č recomendado utilizando comando STK apenas se voc√™ j√° sabe exatamente o que voc√™ est√° fazendo, porque a utiliza√ß√£o errada pode danificar o chip e torn√°-lo inutiliz√°vel.

Especifica√ß√Ķes

Não faz parte de nenhuma especificação.

Veja também