2016-10-21 15 views
-2

情況如下:我的應用程序的用戶將僅使用他們的電話號碼創建他們的帳戶(例如WhatsApp)。所以沒有用戶名,密碼或類似的東西。我將在驗證後將這些電話號碼存儲在我的數據庫中,因此我知道所有存儲的號碼都將採用特定的格式。需要幫助創建一個動態電話號碼檢測器?

然而,棘手的部分是我希望我的應用程序通過我的用戶的聯繫人來查看他們的聯繫人是否在我的應用程序的服務器上有一個帳戶。理論上,我只是希望應用程序檢查電話號碼,看看它是否存在於我的數據庫中,因爲我很確定電話號碼是我的應用程序可以訪問的聯繫人的唯一(唯一)屬性(請更正我如果我錯了)。

我害怕的事情是每個智能手機擁有者都以自己的方式存儲聯繫人的電話號碼。我的意思是,例如,一個人可能會以「乾淨的方式」存儲聯繫人的電話號碼,國家代碼和地區代碼以及其他應該在電話號碼中的所有內容,例如:+1 xxx xxx xxxx(我來自荷蘭,我只是在猜測,所以如果這不是美國的電話號碼,我向所有美國讀者道歉)。其他人可能會以「快捷方式」存儲他的聯繫人的電話號碼,沒有任何國家代碼或區號,如下所示:xxx xxx xxxx(無國家代碼)或xxx xxxx(無區號)。

這在一個國家(例如美國)已經是個問題,更不用說某人在他的電話中有其他國家的聯繫人(帶有他們自己的區號規則)的情況。聯繫人列表中的聯繫人仍可能使用我的應用和他們的電話號碼,但如果該人以「快捷方式」存儲了他的聯繫人電話號碼,我的應用將無法在數據庫中找到它。現在,我要麼尋找聯繫人的替代唯一值,我也可以將其存儲在我的數據庫中,以便將其用作標識符(我高度懷疑存在,儘管如此),或者最好是一種使應用程序搜索的方法即使存儲在聯繫人列表中的號碼與存儲在我的數據庫中的電話號碼不一致,它也會識別出匹配的電話號碼。

與其說是一些技術性的建議,我寧願聽到某個知道世界各地電話號碼的人的消息。例如:僅僅搜索聯繫人電話號碼的最後8位數字是否明智,或者在世界其他地方可能存在重複的電話號碼方面會有風險?只是想知道最安全的方法是什麼...

順便說一下:我正在建設的應用程序是用Swift 3編寫的,我將通過Apple的聯繫人框架訪問用戶的聯繫人。

+0

請告訴我你的警告您的用戶在這樣做之前是否抽取了他們的朋友/家人/同事的聯繫信息? – ceejayoz

+0

@ceejayoz我不會虹吸任何東西或任何人。訪問聯繫人號碼的唯一方法是使用蘋果自己的權限提示,將其與存儲的數據進行比較。它不會對數字做任何其他處理,所以這意味着它不會將其存儲或傳遞給其他人。簡而言之,沒有任何人(包括我自己)能夠訪問用戶的聯繫信息。當然,我會讓用戶選擇他們的聯繫人是否可以看到用戶是否在使用我的應用,但除此之外,我什麼也不做與世界上任何其他與邀請兼容的社交應用。 –

+0

@ceejayoz或者你是否告訴我你必須授予WhatsApp權限才能讓你的任何聯繫人在你創建該應用的配置文件的那一刻給你發送WhatsApp消息?如果你這樣做,你可能已經下載了錯誤的應用程序。 –

回答

0

獨特的代碼是棘手的 - 尤其是當基於真實世界的數據(這通常很嘈雜,並且您可以想到更多的例外)。

我同意「最後8位數」會非常危險。 相反,我要做的是弄清楚(或猜測)用戶來自哪個國家,並始終將其與電話號碼一起存儲(即使用戶不選擇顯示它)。

因此可以說,如果他們有一個國家的地址 - 然後使用該國家的國家代碼。如果他們不這樣做,那麼有一個「默認」國家(美國經常使用,但我真的很討厭這個(我來自澳大利亞)。

請注意,您仍然會得到錯誤和例外,但它意味着如果9123 4567與(+61)9123 4567相同,則可以進行有根據的猜測。

另外要注意的東西,如:

  1. 有時不止一個人共用一個電話號碼
  2. 有時一個人有多個電話號碼
+0

是的,抱歉,我忘記提到這一點,但是,是的,我要求我的用戶放棄他們的國家,我甚至要求提供一個地區,以防他們放棄在該國內有多個區號的國家(其中大部分都是)。然而,這並不能解決我的問題,因爲它仍然是我必須搜索的聯繫人號碼,而不是我的用戶號碼。即使紐約的某個人會註冊我的應用程序,他仍然可以在巴黎或孟買生活(兩者的數字完全不同)的聯繫人...... –

+0

請參閱我的應用程序無法知道國家/地區某人的聯繫人居住,因此它不知道它比較的電話號碼屬於哪個國家/地區。我只需要使用7位數字的方法(因爲這是全球任何電話號碼的最低金額)。首先,查找最後7位數字,然後查看在這7位數字之前是否有任何前綴以確保它們匹配。 –

+0

順便說一句,作爲對您給予我的兩個警告的迴應:我還將應用程序安裝在設備上,因此共享號碼一次只能在一臺設備上運行我的應用程序。多個電話號碼無關緊要,因爲我只是在數據庫中查找號碼,而不是聯繫人。如果我找到匹配的號碼,則可以忽略該聯繫人的所有其他號碼。 –