2010-06-23 5 views
2

에 국제 전화 번호 다루기 :나는 다음과 같은 방법으로 연락처 데이터를 사용하는 응용 한 아이폰

  1. 는 클라이언트에서 SMS를 보내려면이
  2. 우리의 서버에서 SMS를 보내려면
  3. 으로

미국에서 잘 작동하지만 국제화에는 일련의 문제가 있습니다. 이것들이 작동하게하는 나의 가정입니다 :

# 1 - 클라이언트로부터 SMS를 보내는 것은 간단합니다. 주소록에있는 숫자를 그대로 사용하고 (정상화하지 않고) OS가 알아낼 수있게하십시오. SMS를 보낼 수있는 주어진 번호로 전화를 걸 수있는 경우가 있습니다 (맞습니까?)

# 2/# 3 - 서버에서 SMS를 보내는 것이 더 복잡합니다. 대부분의 SMS API는 국제 표기법 ("+"접두어 및 국가 코드)을 요구하지만 사용자는 연락처 목록에 다양한 접두사 (지역 코드, 국가 코드 등)가있는 다양한 지역 및 국제 전화 번호를 갖습니다. 따라서 정규화가 필요합니다. 데이터베이스에서 사용자 전화 번호를 일치 시키려면 정규화가 필요합니다.

전화 번호를 정규화하려면 먼저 사용자가 "+" "011"및 "00"접두사를 찾아 전역 번호를 지정할지 여부를 결정해야합니다. 그렇다면 접두사를 제거하고 "+"로 바꾸고 그 번호를 사용하십시오.

숫자가 지역 번호라고 생각하면 자신이 국가 코드를 알아볼 수 있습니다 (신뢰할 수없는 휴리스틱). 이를 위해서는 사용자의 기본 국가 코드를 알아야합니다. iPhone에서는 사용자가 선호하는 지역 (선택 가능)과 사용자의 MCC 및 MNC (위치에 따라 다름)를 얻을 수 있습니다. 그 지역 전화 번호의 대부분이 해당 국가에있을 가능성이 있기 때문에 사용자가 선택한 국가 코드를 향하여 기울고 있습니다.

저는 이것이 전체 숫자를 분석하고 지역 번호 및 기타 구성 요소를 알아 내지 않고 할 수 있다고 생각합니다. 대부분의 국가에서는 자국 코드의 접두사로 "0"을 사용할 수 있다고 가정합니다.

의미가 있습니까? 이것을하기에 더 쉬운 방법이 있습니까?

답변

0

# 1 이것은 사용자가 해외로 나가는 경우를 제외하고는 공정한 가정입니다.

# 2/# 3보다 안정적인 정규화를 수행하려면 사용자의 거친 위치를 얻어야합니다. 여기에 psudeo 코드입니다 : 번호가 "+"로 시작하면

  • 가 사용자의 현재 국가를 얻을 다른
  • 한, (this post 참조)을두고 :
    • country exit codes와 타르트와 그 대체하는 경우 "+"
    • 국가 코드가 시작되면 추가하면 하나의 "0"로 시작하는이, 다른 "+"
    • 와 그 대체하는 경우는 "+"
    • ,이 지역 번호의 가정, 지역 번호 및 국가 코드를 추가하십시오. 이 항목의 복잡성으로 인해 사용자에게 입력을 요청하는 것이 더 쉬울 수도 있습니다 (예 : 현재 지역 번호 및 국가 코드 또는 위치.
관련 문제