2012-05-22 4 views
11

У меня есть несколько вопросов о MSISDN. Я понимаю:MSISDN: Это данные SIM-карты? Почему вся предоставляемая функция (от Blackberry и Android) для получения MSISDN не надежна?

  1. MSISDN является в основном телефонный номер
  2. Это не IMSI

Что мне нужно знать, кроме того, являются:

  1. ли MSISDN номер сожжен (хранящаяся) на SIM-карте? Если да, все ли поставщики уверены, что на SIM-карте есть информация MSISDN? Если это не так, уточнить, ни один из кода программирования не может получить номер MSISDN?

  2. Некоторые люди предлагают получить MSISDN в соответствии с приведенным ниже кодом. Но оба кода возвращают null, если «Мой номер телефона» не установлен в устройстве. С другой стороны, он вернет «Мой номер телефона», если он установлен. Таким образом, возникает вопрос: «Мой номер телефона» равен MSISDN?

    TelephonyManager.getLine1Number(); -> для Android

    Phone.getDevicePhoneNumber(true); -> для Blackberry

  3. В коде выше, данные возврата строки извлекаются из самого или устройства с SIM-карты?

ответ

16

У меня есть некоторое понимание этого вопроса для вас.

  1. ЕЦСОПС может быть сохранены на SIM-карте, однако большинство сетевых провайдеров (все провайдеры в Южной Африке), не храните MSISDN на SIM-карте. Существует несколько причин для этого, наиболее заметным из которых является:
    • Динамическое распределение MSISDN: предварительно оплаченные SIM-карты когда-то выделяют MSISDN при их первом использовании. Это означает, что сеть имеет пул доступных MSISDN и распределяет их всякий раз, когда появляется новая предоплаченная SIM-карта. Это означает, что при отправке SIM-карт у них еще нет MSISDN, что означает, что вы не можете хранить MSISDN до отправки SIM-карт. Некоторые сети «истекают» выделения MSISDN после периода бездействия, особенно когда их доступные номера работают на низком уровне, и возвращают эти числа в доступный пул.
    • Переносимость мобильного номера: в некоторых странах мобильные абоненты могут сохранять свои MSISDN, но изменять сети. Это означает, что MSISDN будет перемещен с SIM-карты, которая предназначена для 1 сети для SIM-карты, которая предназначена для другой сети.

Таким образом, пользователь часто заканчивается с приходом MSISDN на SIM-быть пустым. Пользователь все еще может хранить MSISDN на самой SIM-карте, но это также позволяет им хранить любое произвольное число, и не гарантируется, что он будет установлен или даже будет фактическим номером телефона абонентов.

      2. Те вызовы, которые вы просили, получить номер, который хранится на SIM-карте. Если номер не установлен, вы не получите его, и если у пользователя установлен неправильный номер, вы получите неправильные данные.

      3. Правильно, эта строка извлекается из самой SIM-карты.

Единственный полунадежный способ, которым я располагаю для обнаружения MSISDN, - это WAP/WEB, когда Mobile Operator включает MSISDN в заголовках (вы можете сделать некоторые трюки в веб-просмотре, чтобы увидеть, какие заголовки идут) - однако вы видите только если сеть поддерживает его, и если пользователь находится на мобильных данных - т. е. он не будет работать, если пользователь подключен к WiFi.

Другой механизм, о котором я могу думать (единственный гарантированный механизм, о котором я могу думать), - это сеанс USSD, поскольку вы всегда получаете правильное MSISDN от оператора, но я не нашел способ программного открытия USSD и чтение ответа (по крайней мере, в Android). У меня есть служба USSD, единственным выходом которой является MSISDN, но, к сожалению, это еще не доказано для меня.

+0

Большое вам спасибо, darryn.ten. Я считаю, что многие люди получат так много преимуществ от вашего ответа. И я попытаюсь получить MSISDN через заголовки в режиме GPRS. –

1

Поскольку никто не ответил в последний час, так как Вы отправили свой вопрос, вот что я знаю (хотя я не являюсь экспертом в этой области, просто есть опыт):

  1. MSISDN является телефонный номер; число людей может вам позвонить.
  2. Его нельзя «сжечь» на SIM-карте, так как вы можете сменить сим-карту (обновить или перейти на другого оператора) и сохранить свой номер телефона = MSISDN. Я думаю, что есть таблица сопоставления операторов, которые скрыты от идентификатора SIM-карты до MSISDN и обратно при выполнении вызова/передачи данных. MSISDN может храниться на карте.
+0

Благодарим вас за ответ @SzilardBarany. Я согласен с тем, что оператор имеет некоторую таблицу отображения для преобразования IMSI в MSISDN. –

0

Следует учитывать, что MSISDN имеет тип BIGINT. Поэтому вывод его трансформации заранее, вот так

+0

$ msidn = $ result ['terms'] ['term'] [! Msidn ']; –

+0

var_dump ($ msidn); –

+0

Вместо того, чтобы добавлять комментарии, отредактируйте ваш вопрос. [Подробнее об изменении] [http://stackoverflow.com/help/editing] – buczek