使用数据在appengine上实现“按电话号码查找朋友”功能

2024-07-08 12:50:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我的短信应用程序的一个核心功能是允许用户根据自己的电话号码找到也在使用该服务的朋友。像Whatsapp和Snapchat这样的应用也有同样的机制。在

我正在努力寻找一个能返回大量结果的解决方案。我想知道大多数其他的应用程序是如何实现这一功能的。在

我目前的实现是有用户模型和PhoneUser模型。PhoneUser模型的关键是用户的电话号码,该号码已转换为标准的E164格式。它有一个KeyProperty将其链接到相应的用户。在

class PhoneUser(ndb.Model):
    # id is the phone number in E164 format
    user = ndb.KeyProperty(kind='User', required=True)

当用户注册该服务并授予其电话联系人的访问权限时,该应用程序可以从用户的电话簿中获取大量电话号码。1000个数字并非不可能。我将所有这些数字转换成标准的E164格式,然后为每一个(即。ndb.密钥(“电话用户”,电话号码)。有了电话用户密钥列表,我可以使用ndb.get_multi公司(列出_phoneuser_键)。这样我就可以避免查询1000个号码。在

理论上,假设用户正确地输入带有国家代码的电话号码,这样python phonenumbers库就可以解析它。在

然而,很多时候情况并非如此,但这种方法需要它,因为通过键获取实体需要精确匹配。在

这只是我想到的一种方法,它有它的缺点。这似乎是应用程序中非常常见的功能,我想知道是否有更好的方法。在


Tags: 方法用户模型功能应用程序标准格式电话号码
2条回答

在任何情况下,您都需要将电话号码规范化为通用格式(E164)。我们使用libphonenumber,这很好用。您可以查看python port。在

我们用搜索用户的国家代码替换朋友电话号码中丢失的国家代码。理由:如果用户没有为其联系人输入国家代码,则他们可能来自同一国家。在

提示:当你想要实现反向搜索时,事情会变得有趣——通知现有用户他们的一个朋友出现在网络中。在

正确的方法是不要依赖用户放置市/县代码和/或前缀。我不知道有谁能用国家代码保存他们的号码,除非他们经常出差。 你需要分析和更正这些数字。您可以使用当前地理位置来尝试添加缺少的城市/国家/地区代码,还可以删除不需要的前缀。可能需要对你的目标国家受众进行一些调查。在

相关问题 更多 >

    热门问题