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

У меня есть несколько вопросов о MSISDN. Я понимаю:

  • MSISDN - это в основном номер телефона
  • Это не IMSI

Что мне нужно знать дальше:

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

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

    TelephonyManager.getLine1Number(); → для Android

    Phone.getDevicePhoneNumber(true); → для Blackberry

  • Как вышеприведенный код, возвращаемые данные String извлекаются из самого устройства или с SIM-карты?

Ответ 1

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

  • MSISDN можно хранить на SIM-карте, однако большинство сетевых провайдеров (все провайдеры в Южной Африке) не хранят MSISDN на SIM-карте. Есть несколько причин для этого, наиболее заметное существо:
    • Распределение динамических MSISDN: Prepaid SIMs когда-то выделяется 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 в заголовках (вы можете сделать некоторые трюки webview, чтобы увидеть, какие заголовки проходят), однако вы видите только эти если сеть поддерживает его, и если пользователь находится на мобильных данных - то есть он не будет работать, если пользователь подключен к WiFi.

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

Ответ 2

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

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

Ответ 3

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