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

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

  1. MSISDN-это в основном номер телефона
  2. это не IMSI

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

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

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

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

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

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

3 ответов


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

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

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

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

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

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

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


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

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

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