2014-06-20 25 views
7

Pracuję w sieci społecznościowej. Muszę dodać funkcję "znajdź znajomych" w oparciu o numer telefonu użytkownika i jego książkę adresową (np. WhatsApp i inne).Aplikacja: użyj książki adresowej, aby znaleźć znajomych ::: Jak radzić sobie z kodami krajów

Aplikacja, którą tworzę będzie dostępna na całym świecie i zastanawiałam się, jak inni radzą sobie z problemem z góry i kodów krajów. Oczywiście mogłem znaleźć sposób na obejście, ale jestem pewien, że jest to stosunkowo częste wyzwanie związane z tą funkcją. Problem polega na tym, że niektórzy ludzie zapisują numery z kodem kraju, a niektórzy nie. Czy potrzebuję dwóch wersji numeru telefonu w mojej bazie danych?

Co myślę o zrobieniu:

1) Rejestry użytkowników o liczbie i rodzaju kod kraju, a reszta numeru (dwa pola tekstowe) oddzielnie. Następnie w bazie danych znajdują się dwie oddzielne kolumny. Jeden z całkowitą liczbą zawierającą kod kraju i drugi z numerem bez kodu kraju.

2) Następnie inny użytkownik szuka znajomych za pośrednictwem swojej książki adresowej. W PHP każda liczba jest sprawdzana, a te zaczynające się od "00" są porównywane z liczbami w kolumnie liczb międzynarodowych. Odwrotnie, te, które nie zaczynają się od "00", są porównywane z liczbą bez kodu kraju. W ten sposób użytkownicy mogą znaleźć swoich znajomych niezależnie od tego, jak zapisali swój numer.

Byłbym wdzięczny za pomoc, linki, porady lub wskazówki. Szukam metod najlepszych praktyk.

Dzięki!

Odpowiedz

5

Można sformatować numer telefonu lokalnego kraju na międzynarodowy numer telefonu przy użyciu tej biblioteki libPhoneNumber. Korzysta z dużych danych formatu telefonów i kodów krajów.

A następnie wyszukaj znajomych według międzynarodowego numeru telefonu.

Przykład zastosowania:

 NSError* error = nil; 
     //Parse local phone number using country code from CTCarrier 
     NBPhoneNumber * phoneNumberObject = [[NBPhoneNumberUtil sharedInstance] parseWithPhoneCarrierRegion: phoneNumber 
                             error: &error]; 
     if(error) 
     { 
      //This will get if no CTCarrier info. Maybe iPod, iPhone or iPad without sim 
      error = nil; 
      //You may put there another way to get user country code, or use default(Russia in example) 
      phoneNumberObject = [[NBPhoneNumberUtil sharedInstance] parse: phoneNumber 
                  defaultRegion: @"RU" 
                    error: &error]; 
     } 
     NSString* formattedInternationalPhoneNumber; 
     if(!error) 
     { 
      formattedInternationalPhoneNumber = [[NBPhoneNumberUtil sharedInstance] format: phoneNumberObject 
                       numberFormat: NBEPhoneNumberFormatE164 
                        error: &error]; 
     }