484 lines
16 KiB
Objective-C
484 lines
16 KiB
Objective-C
//
|
||
// SanViewController.m
|
||
// Ifish
|
||
//
|
||
// Created by imac on 15/11/19.
|
||
// Copyright © 2015年 imac. All rights reserved.
|
||
//
|
||
|
||
#import "ScanViewController.h"
|
||
#import "QRCodeReaderView.h"
|
||
#import <AVFoundation/AVFoundation.h>
|
||
#import <AudioToolbox/AudioToolbox.h>
|
||
#define widthRate kScreenSize.width/320
|
||
#import "ZBarReaderController.h"
|
||
#import "CenterViewController.h"
|
||
#import "LeftViewController.h"
|
||
#import "ICSDrawerController.h"
|
||
#import "RightViewController.h"
|
||
#import "AFNetworking.h"
|
||
#import "DeviceModel.h"
|
||
|
||
#import "AppDelegate.h"
|
||
#import "XuToCenterViewController.h"
|
||
#import "IfishBlackListCenterViewController.h"
|
||
#import "FourControlNormalCenterController.h"
|
||
#import "IfishDataUnity.h"
|
||
@interface ScanViewController ()<QRCodeReaderViewDelegate,AVCaptureMetadataOutputObjectsDelegate,UINavigationControllerDelegate,UIImagePickerControllerDelegate,UIAlertViewDelegate,ZBarReaderDelegate>
|
||
{
|
||
QRCodeReaderView * readview;//二维码扫描对象
|
||
|
||
BOOL isFirst;//第一次进入该页面
|
||
BOOL isPush;//跳转到下一级页面
|
||
}
|
||
@property (strong, nonatomic) CIDetector *detector;
|
||
@property(nonatomic,strong) UIButton*bakbutton;
|
||
@property(nonatomic,retain) NSTimer* getInfTimer ;
|
||
|
||
@end
|
||
|
||
@implementation ScanViewController
|
||
|
||
- (void)viewDidLoad {
|
||
[super viewDidLoad];
|
||
UILabel*labe=[[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 44)];
|
||
labe.text=@"扫描";
|
||
labe.textAlignment=NSTextAlignmentCenter;
|
||
labe.textColor=[UIColor whiteColor];
|
||
self.navigationItem.titleView=labe;
|
||
|
||
// self.title = @"扫描";
|
||
self.view.backgroundColor = [UIColor whiteColor];
|
||
|
||
// UIBarButtonItem * rbbItem = [[UIBarButtonItem alloc]initWithTitle:@"相册" style:UIBarButtonItemStyleDone target:self action:@selector(alumbBtnEvent)];
|
||
// self.navigationItem.rightBarButtonItem = rbbItem;
|
||
|
||
// UIBarButtonItem * lbbItem = [[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStyleDone target:self action:@selector(backButtonEvent)];
|
||
// self.navigationItem.leftBarButtonItem = lbbItem;
|
||
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"blackbar.png"] forBarMetrics:UIBarMetricsDefault];
|
||
_bakbutton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||
_bakbutton.frame = CGRectMake(0, 0, 47,44);
|
||
[_bakbutton setImage:[UIImage imageNamed:@"back_btn"] forState:UIControlStateNormal];
|
||
[_bakbutton addTarget: self action: @selector(backButtonEvent) forControlEvents: UIControlEventTouchUpInside];
|
||
[_bakbutton setContentEdgeInsets:UIEdgeInsetsMake(0, 10, 0, -10)];
|
||
_bakbutton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
|
||
|
||
|
||
UIBarButtonItem * lbbItem=[[UIBarButtonItem alloc]initWithCustomView:_bakbutton];
|
||
self.navigationItem.leftBarButtonItem=lbbItem;
|
||
|
||
|
||
isFirst = YES;
|
||
isPush = NO;
|
||
|
||
[self InitScan];
|
||
|
||
}
|
||
|
||
- (void)didReceiveMemoryWarning {
|
||
[super didReceiveMemoryWarning];
|
||
|
||
}
|
||
#pragma mark - 返回
|
||
- (void)backButtonEvent
|
||
{
|
||
|
||
|
||
[self dismissViewControllerAnimated:YES completion:^{
|
||
|
||
}];
|
||
}
|
||
|
||
#pragma mark 初始化扫描
|
||
- (void)InitScan
|
||
{
|
||
//红线
|
||
// UIView*redview=[[UIView alloc]initWithFrame:CGRectMake(60*widthRate,kScreenSize.height/2, 200*widthRate, 1)];
|
||
// redview.backgroundColor=[UIColor redColor];
|
||
|
||
|
||
if (readview) {
|
||
[readview removeFromSuperview];
|
||
readview = nil;
|
||
}
|
||
|
||
readview = [[QRCodeReaderView alloc]initWithFrame:CGRectMake(0, 0, kScreenSize.width, kScreenSize.height)];
|
||
readview.is_AnmotionFinished = YES;
|
||
readview.backgroundColor = [UIColor clearColor];
|
||
readview.delegate = self;
|
||
readview.alpha = 0;
|
||
// [readview addSubview:redview];
|
||
[self.view addSubview:readview];
|
||
|
||
[UIView animateWithDuration:0.5 animations:^{
|
||
readview.alpha = 1;
|
||
}completion:^(BOOL finished) {
|
||
|
||
}];
|
||
|
||
}
|
||
#pragma mark - 相册
|
||
- (void)alumbBtnEvent
|
||
{
|
||
|
||
self.detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:nil options:@{ CIDetectorAccuracy : CIDetectorAccuracyHigh }];
|
||
|
||
if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) { //判断设备是否支持相册
|
||
|
||
if (IFISHIOS8) {
|
||
UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"未开启访问相册权限,现在去开启!" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
|
||
alert.tag = 4;
|
||
[alert show];
|
||
}
|
||
else{
|
||
UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"设备不支持访问相册,请在设置->隐私->照片中进行设置!" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
|
||
[alert show];
|
||
}
|
||
|
||
return;
|
||
}
|
||
|
||
isPush = YES;
|
||
UIImagePickerController *mediaUI = [[UIImagePickerController alloc] init];
|
||
mediaUI.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
|
||
//mediaUI.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeSavedPhotosAlbum];
|
||
mediaUI.allowsEditing =YES;
|
||
mediaUI.delegate = self;
|
||
[self presentViewController:mediaUI animated:YES completion:^{
|
||
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:YES];
|
||
}];
|
||
|
||
}
|
||
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
|
||
{
|
||
|
||
UIImage *image = [info objectForKey:@"UIImagePickerControllerEditedImage"];
|
||
readview.is_Anmotion = YES;
|
||
[picker dismissViewControllerAnimated:YES completion:^{
|
||
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
|
||
[self decodeImage:image];
|
||
//播放扫描二维码的声音
|
||
SystemSoundID soundID;
|
||
NSString *strSoundFile = [[NSBundle mainBundle] pathForResource:@"noticeMusic" ofType:@"wav"];
|
||
AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:strSoundFile],&soundID);
|
||
AudioServicesPlaySystemSound(soundID);
|
||
|
||
// [self accordingQcode:scannedResult];
|
||
|
||
|
||
}];
|
||
|
||
}
|
||
//MARK: - 解析照片
|
||
- (void)decodeImage:(UIImage *)image
|
||
{//进行解码
|
||
|
||
ZBarSymbol *symbol = nil;
|
||
|
||
ZBarReaderController* read = [ZBarReaderController new];
|
||
|
||
read.readerDelegate = self;
|
||
|
||
CGImageRef cgImageRef = image.CGImage;
|
||
|
||
for(symbol in [read scanImage:cgImageRef])break;
|
||
// 将获得到条形码显示到我们的界面上
|
||
if (symbol!=nil) {
|
||
|
||
NSLog(@"%@",symbol.data);
|
||
[self accordingQcode:symbol.data];
|
||
//扫描结果处理
|
||
// [[LYQRCodeHandle shareHandle]readCodeResult:symbol.data fromSuperViewController:self];
|
||
|
||
}
|
||
}
|
||
|
||
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
|
||
{
|
||
[picker dismissViewControllerAnimated:YES completion:^{
|
||
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
|
||
}];
|
||
|
||
}
|
||
|
||
|
||
#pragma mark -QRCodeReaderViewDelegate
|
||
- (void)readerScanResult:(NSString *)result
|
||
{
|
||
readview.is_Anmotion = YES;
|
||
[readview stop];
|
||
|
||
//播放扫描二维码的声音
|
||
// SystemSoundID soundID;
|
||
// NSString *strSoundFile = [[NSBundle mainBundle] pathForResource:@"noticeMusic" ofType:@"wav"];
|
||
// AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:strSoundFile],&soundID);
|
||
// AudioServicesPlaySystemSound(soundID);
|
||
|
||
[self accordingQcode:result];
|
||
|
||
[self performSelector:@selector(reStartScan) withObject:nil afterDelay:1.5];
|
||
}
|
||
#pragma mark - 扫描结果处理
|
||
- (void)accordingQcode:(NSString *)str
|
||
{
|
||
//iFishCamera:摄像头激活码标识
|
||
//deviceId= 水族箱设备标识
|
||
|
||
NSString*formatSting=[NSString stringWithFormat:@"%@",str];
|
||
NSString*headstring=[formatSting substringWithRange:NSMakeRange(0,9)];
|
||
NSString*deviceIdString=[str substringFromIndex:9];
|
||
if ([headstring isEqualToString:@"deviceId="]){
|
||
|
||
UserModel*model=[[DataCenter defaultDtacenter]valueForKey:@"UserLogIn"];
|
||
NSArray*arry=[[DataCenter defaultDtacenter]valueForKey:@"deviceInfo"];
|
||
NSMutableArray*deviceIdArr=[[NSMutableArray alloc]init];
|
||
DeviceModel*deviceModel=[[DeviceModel alloc]init];
|
||
if ([arry count]==0) {
|
||
[self shareDeviceWithUserId:model.userId addDeviceId:deviceIdString];
|
||
|
||
}else{
|
||
|
||
|
||
for (deviceModel in arry) {
|
||
NSString*string=[NSString stringWithFormat:@"%@",deviceModel.deviceId];
|
||
[deviceIdArr addObject:string];
|
||
|
||
}
|
||
|
||
|
||
|
||
BOOL isExst=[deviceIdArr containsObject:deviceIdString];
|
||
if (isExst) {
|
||
|
||
[self.view makeToast:@"设备已经存在"];
|
||
[self dismissViewControllerAnimated:YES completion:^{
|
||
|
||
}];
|
||
|
||
}else{
|
||
[self shareDeviceWithUserId:model.userId addDeviceId:deviceIdString];
|
||
}
|
||
}
|
||
|
||
}else{
|
||
|
||
|
||
if ([str hasPrefix:@"iFishCamera:"]) {
|
||
//摄像头验证码 激活摄像头用
|
||
|
||
NSString *cameraCade=[str substringFromIndex:12];
|
||
if (!self.cameraModel){
|
||
[self.view makeToast:@"请到首页摄像头列表,选择摄像头后激活"];
|
||
return;
|
||
}
|
||
|
||
[self activeCameraWith:self.cameraModel.cameraId addWith:cameraCade];
|
||
|
||
|
||
}else if ([str hasPrefix:@"IfishShopId:"]){
|
||
//扫描店铺二维码
|
||
//成为店铺会员
|
||
NSString *shopId=[str substringFromIndex:12];
|
||
[self addShopsUser:shopId];
|
||
|
||
}else{
|
||
|
||
NSString *result = [NSString stringWithFormat:@"扫面结果:%@",str];
|
||
[self.view makeToast:result];
|
||
}
|
||
|
||
|
||
}
|
||
|
||
}
|
||
|
||
#pragma mark - 扫一扫 绑定水族箱
|
||
//老版本扫一扫 绑定 接口中无请求头 已换新接口
|
||
-(void)shareDeviceWithUserId:(NSNumber*)userId addDeviceId:(NSString*)deviceId{
|
||
|
||
NSString *userID =[NSString stringWithFormat:@"%@",userId];
|
||
[AFHttpTool shareDeviceWhth:userID deviceId:deviceId success:^(id response) {
|
||
|
||
NSDictionary*resultDic=[NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableContainers error:nil];
|
||
NSLog(@"result:%@",resultDic[@"result"]);
|
||
if ([resultDic[@"result"] isEqualToString:@"100"]) {
|
||
NSMutableArray*deviceArry=[[DataCenter defaultDtacenter]valueForKey:@"deviceInfo"];
|
||
[[IfishDataUnity shareDataInstance] addDeviceByQRCodeWithDic:resultDic addWith:deviceArry dismiss:self];
|
||
}else if ([resultDic[@"result"] isEqualToString:@"101"]){
|
||
[self.view makeToast:@"分享失败"];
|
||
|
||
}else if ([resultDic[@"result"] isEqualToString:@"301"]){
|
||
[self.view makeToast:@"请求验证失败,请重新登陆"];
|
||
|
||
}else if ([resultDic[@"result"] isEqualToString:@"302"]){
|
||
[self.view makeToast:@"请求被舍弃,未执行"];
|
||
}
|
||
} failure:^(NSError *err) {
|
||
|
||
}];
|
||
|
||
}
|
||
- (void)reStartScan
|
||
{
|
||
readview.is_Anmotion = NO;
|
||
|
||
if (readview.is_AnmotionFinished) {
|
||
[readview loopDrawLine];
|
||
}
|
||
|
||
[readview start];
|
||
}
|
||
#pragma mark - view
|
||
- (void)viewWillAppear:(BOOL)animated
|
||
{
|
||
[super viewWillAppear:animated];
|
||
|
||
if (isFirst || isPush) {
|
||
if (readview) {
|
||
[self reStartScan];
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
- (void)viewDidDisappear:(BOOL)animated
|
||
{
|
||
[super viewDidDisappear:animated];
|
||
|
||
if (readview) {
|
||
[readview stop];
|
||
readview.is_Anmotion = YES;
|
||
}
|
||
|
||
}
|
||
|
||
- (void)viewDidAppear:(BOOL)animated
|
||
{
|
||
[super viewDidAppear:animated];
|
||
|
||
if (isFirst) {
|
||
isFirst = NO;
|
||
}
|
||
if (isPush) {
|
||
isPush = NO;
|
||
}
|
||
}
|
||
#pragma mark - 激活摄像头
|
||
|
||
-(void)activeCameraWith:(NSString *)cameraId addWith:(NSString *)activeCode{
|
||
|
||
|
||
AFHTTPRequestOperationManager*mannager=[AFHTTPRequestOperationManager manager];
|
||
mannager.responseSerializer=[AFHTTPResponseSerializer serializer];
|
||
NSMutableDictionary * para = [NSMutableDictionary dictionary];
|
||
[para setValue:cameraId forKey:@"cameraId"];
|
||
[para setValue:activeCode forKey:@"activeCode"];
|
||
[mannager POST:JiHuoSheXiangTou parameters:para success:^(AFHTTPRequestOperation *operation, id responseObject) {
|
||
NSDictionary*resultDic=[NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
|
||
NSLog(@"result:%@",resultDic[@"result"]);
|
||
if ([resultDic[@"result"] isEqualToString:@"100"]) {
|
||
[self.view makeToast:@"激活成功"];
|
||
NSMutableArray *oldCameraArr= [[DataCenter defaultDtacenter]valueForKey:@"cameraArr"];
|
||
|
||
NSMutableArray *newCamerArr =[[NSMutableArray alloc] init];
|
||
|
||
|
||
for (IfishCameraModel *camera in oldCameraArr) {
|
||
|
||
if ([camera.cameraId isEqualToString:cameraId]) {
|
||
|
||
camera.isActive = @"1";
|
||
|
||
}
|
||
|
||
[newCamerArr addObject:camera];
|
||
|
||
|
||
}
|
||
|
||
//存储摄像头数组
|
||
[[DataCenter defaultDtacenter]setValue: newCamerArr forKey:@"cameraArr"];
|
||
|
||
|
||
_getInfTimer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(scanviewDelayDissMiss) userInfo:nil repeats:NO];
|
||
;
|
||
|
||
|
||
}else if ([resultDic[@"result"] isEqualToString:@"101"]){
|
||
|
||
[self.view makeToast:@"激活失败"];
|
||
|
||
}else if ([resultDic[@"result"] isEqualToString:@"208"]){
|
||
|
||
[self.view makeToast:@"激活码已被使用"];
|
||
|
||
}else if ([resultDic[@"result"] isEqualToString:@"209"]){
|
||
|
||
[self.view makeToast:@"无效的激活码"];
|
||
|
||
}else{
|
||
|
||
|
||
}
|
||
|
||
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
|
||
|
||
|
||
|
||
}];
|
||
|
||
|
||
}
|
||
-(void)scanviewDelayDissMiss{
|
||
|
||
[_getInfTimer invalidate];
|
||
_getInfTimer = nil;
|
||
|
||
|
||
// __weak typeof (self) weakslef = self;
|
||
|
||
[self dismissViewControllerAnimated:YES completion:^{
|
||
|
||
|
||
|
||
}];
|
||
|
||
|
||
}
|
||
|
||
#pragma mark -成为商家会员
|
||
-(void)addShopsUser:(NSString *)shopId{
|
||
|
||
NSString *useriD =[dataContorl dataControlGetUserIdInfo];
|
||
[AFHttpTool becomeShopUserWith:useriD shopId:shopId success:^(id response) {
|
||
NSDictionary*resultDic=[NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableContainers error:nil];
|
||
NSLog(@"result:%@",resultDic[@"result"]);
|
||
if ([resultDic[@"result"] isEqualToString:@"100"]) {
|
||
[[UIApplication sharedApplication].keyWindow makeToast:@"恭喜已成为该商家会员"];
|
||
[self dismissViewControllerAnimated:YES completion:^{
|
||
|
||
}];
|
||
}else{
|
||
NSString *str = [NSString stringWithFormat:@"请求出错:%@",resultDic[@"result"]];
|
||
[self.view makeToast:str];
|
||
}
|
||
|
||
} failure:^(NSError *err) {
|
||
[self.view makeToast:@"请求异常"];
|
||
|
||
}];
|
||
|
||
}
|
||
|
||
//设置根视图
|
||
-(void)setAppTabRoot{
|
||
|
||
IfishMianTabViewController *mianVC=[[IfishMianTabViewController alloc] init];
|
||
|
||
[UIApplication sharedApplication].delegate.window.rootViewController=mianVC;
|
||
|
||
}
|
||
|
||
|
||
@end
|