2012-05-22 287 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); - >黑莓

  3. 如上代碼,返回字符串數據是從該設備本身或從SIM卡獲取的?

回答

16

我對你有一些瞭解。

  1. 的MSISDN 可以存儲在SIM卡上,但大多數網絡提供商(南非所有供應商)不MSISDN號碼儲存在SIM卡上。這有幾個原因,最顯着的是:
    • 動態MSISDN分配:預付費SIM有時在首次使用時分配給MSISDN。這意味着網絡有一個可用的MSISDN池,並在新的預付費SIM卡聯機時分配它們。這意味着當SIM卡出貨時,它們還沒有MSISDN,這意味着您在發送SIM卡之前無法存儲MSISDN。某些網絡在一段時間內處於非活動狀態(特別是當其可用數量不足時)「MSISDN」分配「過期」,並將這些數字返回給可用池。
    • 移動號碼可攜帶性:有些國家允許移動用戶保留他們的MSISDN但改變網絡。這意味着MSISDN將從用於1個網絡的SIM移動到用於另一個網絡的SIM。

所以用戶經常使用的SIM卡是空白的MSISDN條目結束。用戶仍然可以將MSISDN存儲在SIM卡本身上,但是這也允許他們存儲任意的號碼,並且不能保證設置或者甚至不是用戶實際的電話號碼。

      2.您詢問的那些電話獲取存儲在SIM卡中的號碼。如果沒有設置號碼,您將無法獲取,如果用戶設置了錯誤的號碼,那麼您將獲得不正確的詳細信息。

      3.正確的,這個字符串是從SIM本身取得的。

當移動運營商在標題中包含MSISDN時,您可以通過WAP/WEB檢查MSISDN,這是唯一半可靠的方式(您可以通過webview查看標題是否經過) - 但是您只能看到這些如果網絡支持它並且用戶在移動數據上 - 即,如果用戶使用WiFi,則它將不起作用。

我能想到的其他機制(我能想到的唯一保證機制)是通過USSD會話,因爲您始終從操作員那裏獲得正確的MSISDN,但我還沒有找到一種以編程方式打開USSD會話並閱讀響應(至少在Android中)。我有一個USSD服務,其唯一的輸出是MSISDN,但不幸的是,這尚未證明可用於我。

+0

非常感謝,darryn.ten。我相信很多人會從你的答案中獲得如此多的優勢。 我將嘗試通過GPRS模式上的標題獲取MSISDN。 –

1

由於沒有人在最後一小時回覆,因爲你發佈你的問題,這裏是我所知道的(雖然我不是這方面的專家,只是有一些經驗):

  1. MSISDN是電話號碼;人們可以撥打你的號碼。
  2. 它不能被「燒」進SIM卡,因爲您可以更換SIM卡(升級或更改爲其他運營商)並保留您的電話號碼= MSISDN。我認爲在運營商有一個映射表,它從SIM卡ID轉換到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

相關問題