2012-05-22 11 views
11

Ich habe mehrere Fragen zu MSISDNs. Ich verstehe:MSISDN: Sind es SIM-Kartendaten? Warum alle die zur Verfügung gestellte Funktion (von Blackberry und Android) MSISDN nicht zuverlässig abzurufen?

  1. MSISDN ist die im Grunde die Telefonnummer
  2. Es ist nicht IMSI

ist, was ich wissen müssen, um weiter sind:

  1. Ist MSISDN-Nummer verbrannt (gespeichert) in der SIM-Karte? Wenn ja, stellen alle Provider sicher, dass MSISDN-Informationen in der SIM-Karte vorhanden sind? Wenn es nicht zu klären ist, kann keiner der Programmcode die MSISDN-Nummer holen?

  2. Einige Leute schlagen vor, MSISDN wie unten Code zu holen. Beide Codes geben jedoch null zurück, wenn "Meine Telefonnummer" nicht im Gerät festgelegt ist. Auf der anderen Seite wird die "Meine Telefonnummer" zurückgegeben, wenn sie eingestellt ist. So lautet die Frage: "Meine Telefonnummer" entspricht MSISDN?

    TelephonyManager.getLine1Number(); -> für Android

    Phone.getDevicePhoneNumber(true); -> für Blackberry

  3. Als Code oben, die Rückkehr String Daten aus dem Gerät abgerufen werden selbst oder von der SIM-Karte?

Antwort

16

Ich habe einen Einblick in die Angelegenheit für Sie.

  1. Die MSISDN kann auf der SIM-Karte gespeichert werden, aber die meisten Netzbetreiber (alle Anbieter in Südafrika) haben die MSISDN auf der SIM-Karte nicht speichern. Dafür gibt es mehrere Gründe:
    • Dynamische MSISDN-Zuordnung: Prepaid-SIMs werden bei der ersten Verwendung manchmal einer MSISDN zugewiesen. Das bedeutet, dass das Netzwerk über einen Pool verfügbarer MSISDNs verfügt und diese immer dann zuweist, wenn eine neue Prepaid-SIM-Karte online geschaltet wird. Dies bedeutet, dass sie, wenn die SIMs ausgeliefert werden, noch keine MSISDN haben, was bedeutet, dass Sie vor dem Versand der SIMs keine MSISDN speichern können. Einige Netzwerke "verfallen" MSISDN-Zuordnungen nach einem Zeitraum der Inaktivität, insbesondere wenn ihre verfügbaren Nummern niedrig sind, und geben diese Nummern an den verfügbaren Pool zurück.
    • Portabilität von Mobilnummern: In einigen Ländern können Mobilfunkteilnehmer ihre MSISDN behalten, jedoch das Netzwerk wechseln. Dies bedeutet, dass die MSISDN von einer SIM für 1 Netzwerk zu einer SIM für ein anderes Netzwerk verschoben wird.

So ist der Benutzer endet oft mit dem MSISDN Eintrag oben auf der SIM leer zu sein. Der Benutzer kann weiterhin die MSISDN auf der SIM selbst speichern, aber dies ermöglicht ihnen auch, irgendeine beliebige Nummer zu speichern, und es ist nicht garantiert, dass sie eingestellt ist oder sogar die tatsächliche Telefonnummer des Teilnehmers ist.

      2. Diejenigen Anrufe, die Sie gefragt haben, holen die Nummer, die auf der SIM-Karte gespeichert ist. Wenn die Nummer nicht festgelegt ist, erhalten Sie sie nicht, und wenn der Benutzer die falsche Nummer festgelegt hat, haben Sie die falschen Details.

      3. Richtig, diese Zeichenfolge wird von der SIM-Karte abgerufen. Die einzige semi-zuverlässige Möglichkeit, MSISDN zu erkennen, ist über WAP/WEB, wenn der Mobile Operator die MSISDN in die Header integriert (Sie können einige Webview-Tricks machen, um zu sehen, welche Header durchkommen) - wie Sie sehen Dies ist der Fall, wenn das Netzwerk dies unterstützt und wenn sich der Benutzer in Mobile Data befindet - dh es funktioniert nicht, wenn der Benutzer auf WiFi ist. Der andere Mechanismus, den ich mir vorstellen kann (der einzige garantierte Mechanismus, den ich mir vorstellen kann), ist über eine USSD - Sitzung, da Sie immer die richtige MSISDN vom Operator bekommen, aber ich habe keine Möglichkeit gefunden, eine .a zu öffnen USSD-Sitzung und Lesen der Antwort (zumindest in Android). Ich habe einen USSD-Dienst, dessen einziger Ausgang die MSISDN ist, aber das hat sich leider noch nicht als brauchbar erwiesen.

+0

Vielen Dank, darryn.ten. Ich glaube, viele Menschen werden von Ihrer Antwort so viel profitieren. Und ich werde versuchen, die MSISDN über die Header im GPRS-Modus zu bekommen. –

1

Da niemand in der letzten Stunde antwortete, da Sie Ihre Frage gepostet, hier ist das, was ich weiß (obwohl ich in diesem Bereich kein Experte bin, nur einige Erfahrung):

  1. MSISDN ist die Telefonnummer; die Anzahl der Personen, die Sie anrufen können.
  2. Es kann nicht in die SIM-Karte "gebrannt" werden, da Sie die SIM-Karte ändern können (Upgrade oder Wechsel zu einem anderen Betreiber) und behalten Sie Ihre Telefonnummer = MSISDN. Ich denke, es gibt eine Mapping-Tabelle bei den Betreibern, die von SIM-Karten-ID zu MSISDN und zurück, wenn Anruf/Datentransfer gemacht wird. Die MSISDN könnte auf der Karte gespeichert sein.
+0

Vielen Dank für Ihre Antwort, @SzilardBarany. Ich stimme zu, dass Operator eine Art Mapping-Tabelle für die Konvertierung von IMSI in MSISDN haben. –

0

Sie sollten berücksichtigen, dass MSISDN den Typ BIGINT hat. Aus diesem Grund geben Sie im Voraus Typumwandlung, wie diese

+0

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

+0

var_dump ($ msidn); –

+0

Anstatt Kommentare hinzuzufügen, bearbeiten Sie Ihre Frage. [Weitere Informationen zum Bearbeiten] (http://stackoverflow.com/help/editing) – buczek