使用上面两个npm包,再加上RN的组件就可实现获取手机通讯录内容,且可以按照姓名的首字母进行排序。实际相关的文章有很多,这里主要讲述自己在实现的过程中遇到的问题,以及是怎么解决的。
1:react-native-contacts
的使用
具体使用的方法可点击地址
查看详细的使用步骤,这里说一下我在使用的过程中遇到的问题。
- react native >= 0.6版本的不需要在单独
link
如果你使用的是react native >= 0.6版本,且有使用react-native-contacts
,出现了如下这种情况
很有可能就是你link后造成的,只需要把你本不需要的link的包卸载掉即可,具体命令在你react-native run ios
的时候会出现如下的报错信息
按照提示执行react-native unlink xxxxxxxx
即可。
如上图,讲述了如何在ios中使用react-native-contacts
,因为鄙人的英语水平是在有限,而且还没有自仔细看使用文档,顺着说明就往下复制。结果就出现了问题。
在我们安装好包之后ios,只需在ios/Podfile
文件中插入这行代码即可:
pod 'react-native-contacts', :path => '../node_modules/react-native-contacts'
切记不用在进行如下内容:<0.6版本的在按照以下步骤进行
ios记得在xcode中按照如下方式配置权限,否则真机调试时可能会出现强制退出的情况
安卓的配置按照文档说明一步一步的配置即可。
2.如何在获取后对数据进行分组
如果在你的需求里是不需要按照首字母进行分组的话就可以不看以下内容了。
实现过程请查看大佬的教程:大佬地址
首先,如果要按照名字拼音的首字母进行排序有两种方式:
- 提取第一个字,使用
sort
方法进行排序 - 使用依赖包提起第一个字母进行排序
二者都可以实现,但是使用第二种方式会使我们的数据可以适用更多的场景,这个时候也就使用上了pinyin
这个包,安装和使用的地址已放在文章头部。
如果你遇到了在模拟器上是正常的,在真机上无法实现,建议检测一下familyName
和givenName
是否为真,做好两者同时为空时的异常处理。