|
加联系人的方式还包括通过二维码扫描好友添加方式。二维码的实现需要借助第三方库,我们在项目中导入LBXscan的库。二维码的生成,通过二维码生成器可以成二维码图片,使用到的生成器函数有:[LBXScanWrapper createQRWithString:[NSString stringWithFormat
第4章系统设计45"%@?%ld&%@",INTERNET_URL,BCConversationTypeChat,INTRANET_ID] size:_qrImgView.bounds.size];该Url地址的生成依靠当前聊天类型,联系人ID拼凑而成,该方法生成的对象是UIImage对象,我们不需要做额外处理,可以用ImageView直接显示该生成的二维码图片。二维码扫描过程为:1.为设备会话新建对象,该对象用来设置设备数据输入。2.获取设备摄像头,将摄像头对象加入到当前会话中。3.将实时获取得到的图像显示在屏幕上。、4.通过协议回调的方式,将扫描到二维码数据,传递给需要改数据对象。本系统实现摄像头扫描好友添加,扫描本地相册二维码图片两种功能。摄像头扫描功能实现,在类ScanViewController.m中调用第三方库函数实现扫描,在视图出现后,调用扫描函数,检测设备时候获取摄像头权限,如果没有权限,提示用户开启摄像头权限。完成授权,新建扫描封装对象:self.scanObj = [[LBXScanWrapper alloc]initWithPreView:self.viewArrayObjectType:nilcropRect:cropRectsuccess:^(NSArray *array){ [weakSelf scanResultWithArray:array];}];生成扫描对象。在Block回调中处理扫描的数据,扫描的数据以数组形式返回,扫描对象可同时识别两个图片,不能同时识别二维码与条形码,LBXScanResult *scanResult = array[0];NSString*strResult = scanResult.strScanned;通过上面的代码可以将获取到的二维码数据转化为string类型数据,将该地址分离,使用“?”标识符将string分为两部分,后半部分通过& 分离出联系人intranetID,根据intanetID查找该联系人是否在列表,不再列表中,网络请求联系人Profile,做进一步的操作[23]。二维码图片的识别实现,打开本地相册,在imagePickerController中选中一张图片并识别:__block UIImage* image = [info objectForKey:UIImagePickerControllerEditedImage];if (!image){image = [info objectForKey:UIImagePickerControllerOriginalImage];}
第4章系统设计46__weak __typeof(self) weakSelf = self;[LBXScanWrapper recognizeImage:image success:^(NSArray *array) {[weakSelf scanResultWithArray:array];}];上面的实现我们可以看出,我们从本地图片库中获取该图片的原始内容,并通过识别函数识别选中图片,在Block的回调中数据处理跟摄像头数据处理一样
|
|