2012-05-22 16 views
11

Tôi có một số câu hỏi về MSISDN. Tôi hiểu:MSISDN: Có phải là dữ liệu thẻ SIM không? Tại sao tất cả các chức năng được cung cấp (từ Blackberry và Android) để lấy MSISDN không đáng tin cậy?

  1. MSISDN là về cơ bản là số điện thoại
  2. Nó không phải là IMSI

gì tôi cần phải biết thêm là:

  1. là số MSISDN cháy (được lưu trữ) trong thẻ SIM? Nếu có, tất cả các nhà cung cấp có đảm bảo rằng có thông tin MSISDN trong Thẻ SIM không? Nếu không, để được làm rõ, Không có mã chương trình nào có thể lấy số MSISDN?

  2. Một số người đề xuất tìm nạp MSISDN như mã bên dưới. Nhưng cả hai mã trả lại null nếu "Số điện thoại của tôi" không được đặt trong thiết bị. Mặt khác, nó sẽ trả về "Số điện thoại của tôi" nếu nó được thiết lập. Do đó, câu hỏi là: "Số điện thoại của tôi" tương đương với MSISDN?

    TelephonyManager.getLine1Number(); -> dành cho Android

    Phone.getDevicePhoneNumber(true); -> cho Blackberry

  3. Như mã trên, các dữ liệu trở lại chuỗi được lấy từ các thiết bị chính nó hoặc từ thẻ SIM?

Trả lời

16

Tôi có một số thông tin chi tiết về vấn đề này cho bạn.

  1. Các MSISDN thể được lưu trữ trên thẻ SIM, tuy nhiên hầu hết các nhà cung cấp mạng (tất cả các nhà cung cấp ở Nam Phi) không lưu trữ các MSISDN trên thẻ SIM. Có một số lý do cho điều này, đáng chú ý nhất là:
    • Phân bổ MSISDN động: SIM trả trước đôi khi được cấp phát MSISDN khi chúng được sử dụng lần đầu tiên. Điều này có nghĩa là mạng có một nhóm các MSISDN có sẵn và phân bổ chúng bất cứ khi nào một SIM trả trước mới xuất hiện trực tuyến. Điều này có nghĩa là khi các SIM được vận chuyển, chúng chưa có MSISDN, nghĩa là bạn không thể lưu trữ MSISDN trước khi vận chuyển SIM. Một số mạng 'hết hạn' phân bổ MSISDN sau một khoảng thời gian không hoạt động, đặc biệt là khi các số có sẵn của chúng đang chạy thấp và trả về các số này cho nhóm có sẵn.
    • Tính di động của số di động: Một số quốc gia cho phép người đăng ký di động giữ MSISDN của họ nhưng thay đổi mạng. Điều này có nghĩa là MSISDN sẽ được chuyển từ một SIM dành cho 1 mạng vào một SIM dành cho mạng khác.

Vì vậy, người dùng thường kết thúc với mục nhập MSISDN trên SIM trống. Người dùng vẫn có thể lưu trữ MSISDN trên SIM, nhưng điều này cũng cho phép họ lưu trữ bất kỳ số tùy ý nào và không đảm bảo được đặt hoặc thậm chí là số điện thoại thực của người đăng ký.

      2. Các cuộc gọi bạn đã hỏi về tìm nạp số được lưu trữ trong thẻ SIM. Nếu số không được đặt, bạn sẽ không nhận được số đó và nếu người dùng đã đặt sai số thì bạn sẽ có chi tiết không chính xác.

      3. Đúng, chuỗi này được tìm nạp từ chính SIM.

Cách duy nhất đáng tin cậy để phát hiện MSISDN là qua WAP/WEB khi Nhà cung cấp dịch vụ di động bao gồm MSISDN trong tiêu đề (bạn có thể thực hiện một số thủ thuật webview để xem tiêu đề nào đang đến) - tuy nhiên bạn chỉ thấy nếu mạng này hỗ trợ và nếu người dùng đang sử dụng Dữ liệu di động - tức là nó sẽ không hoạt động nếu người dùng đang sử dụng WiFi. Cơ chế khác mà tôi có thể nghĩ đến (cơ chế được bảo đảm duy nhất tôi có thể nghĩ đến) là thông qua một phiên USSD, vì bạn luôn có được MSISDN chính xác từ nhà điều hành, nhưng tôi không tìm được cách mở chương trình một cách dễ dàng. Phiên USSD và đọc phản hồi (trong Android ít nhất). Tôi có một dịch vụ USSD mà chỉ có đầu ra là MSISDN nhưng tiếc là điều này đã không được chứng minh có thể sử dụng cho tôi được nêu ra.

+0

Cảm ơn bạn rất nhiều, darryn.ten. Tôi tin rằng nhiều người sẽ nhận được rất nhiều lợi thế từ câu trả lời của bạn. Và tôi sẽ cố gắng lấy MSISDN qua các tiêu đề trên Chế độ GPRS. –

1

Vì không ai trả lời trong giờ cuối cùng kể từ khi bạn đăng câu hỏi của bạn, đây là những gì tôi biết (mặc dù tôi không phải là một chuyên gia trong lĩnh vực này, chỉ có một số kinh nghiệm):

  1. MSISDN là số điện thoại; số người có thể gọi cho bạn.
  2. Không thể "cháy" vào thẻ sim vì bạn có thể thay đổi thẻ sim (nâng cấp hoặc đổi sang nhà điều hành khác) và giữ số điện thoại của bạn = MSISDN. Tôi nghĩ rằng có một bảng lập bản đồ tại các nhà khai thác mà bí mật từ ID thẻ sim để MSISDN và trở lại khi gọi/truyền dữ liệu được thực hiện. MSISDN có thể được lưu trữ trên thẻ.
+0

Cảm ơn bạn đã trả lời, @SzilardBarany. Tôi đồng ý rằng toán tử có một số loại bảng ánh xạ để chuyển đổi IMSI thành MSISDN. –

0

Bạn nên tính đến MSISDN có loại BIGINT. Do đó, việc xuất chuyển đổi sẽ thực hiện chuyển đổi loại trước, như thế này

+0

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

+0

var_dump ($ msidn); –

+0

Thay vì thêm nhận xét, vui lòng chỉnh sửa câu hỏi của bạn. [Tìm hiểu thêm về chỉnh sửa] (http://stackoverflow.com/help/editing) – buczek

Các vấn đề liên quan