#import "AppDelegate.h" #import "GeneratedPluginRegistrant.h" #import "CommonDefine.h" #import "XSFlutterManager.h" #import "Sformat.h" #import "Pub.h" #import "Msg.h" #import "VideoTalkManager.h" #import #import "BaseViewController.h" @interface AppDelegate() @end @implementation AppDelegate { SystemSoundID okSound; SystemSoundID noticeSound; SystemSoundID errorSound; SystemSoundID alarmSound; SystemSoundID ringSound; } @synthesize sysinfo; @synthesize db; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [self initCloudPush]; [CloudPushSDK sendNotificationAck:launchOptions]; XSFlutterManager *VC = [[XSFlutterManager alloc] init]; self.window.rootViewController = VC; [self.window makeKeyAndVisible]; //关闭可视对讲功能 需打开时再解注释 [self initSound]; _udp = [[UdpHelper alloc] init]; [_udp Open]; _talk = [[talk_Class alloc] init]; sysinfo.launchtime = [Sformat timestamp]; return YES; } - (void)initCloudPush { // SDK初始化 [CloudPushSDK asyncInit:@"333904046" appSecret:@"3eead09a7fc7416cb4082319aa6f48c6" callback:^(CloudPushCallbackResult *res) { if (res.success) { NSLog(@"Push SDK init success, deviceId: %@.", [CloudPushSDK getDeviceId]); } else { NSLog(@"Push SDK init failed, error: %@", res.error); } }]; } /** * 注册苹果推送,获取deviceToken用于推送 * * @param application */ - (void)registerAPNS:(UIApplication *)application { if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) { // iOS 8 Notifications [application registerUserNotificationSettings: [UIUserNotificationSettings settingsForTypes: (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; [application registerForRemoteNotifications]; } else { // iOS < 8 Notifications [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)]; } } /* * 苹果推送注册成功回调,将苹果返回的deviceToken上传到CloudPush服务器 */ - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { [CloudPushSDK registerDevice:deviceToken withCallback:^(CloudPushCallbackResult *res) { if (res.success) { NSLog(@"Register deviceToken success."); } else { NSLog(@"Register deviceToken failed, error: %@", res.error); } }]; } /* * 苹果推送注册失败回调 */ - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { NSLog(@"didFailToRegisterForRemoteNotificationsWithError %@", error); } /** * 注册推送消息到来监听 */ - (void)registerMessageReceive { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onMessageReceived:) name:@"CCPDidReceiveMessageNotification" object:nil]; } /** * 处理到来推送消息 * * @param notification */ - (void)onMessageReceived:(NSNotification *)notification { CCPSysMessage *message = [notification object]; NSString *title = [[NSString alloc] initWithData:message.title encoding:NSUTF8StringEncoding]; NSString *body = [[NSString alloc] initWithData:message.body encoding:NSUTF8StringEncoding]; NSLog(@"Receive message title: %@, content: %@.", title, body); } //- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // // 点击通知将App从关闭状态启动时,将通知打开回执上报 // // [CloudPushSDK handleLaunching:launchOptions];(Deprecated from v1.8.1) // [CloudPushSDK sendNotificationAck:launchOptions]; // return YES; //} /* * App处于启动状态时,通知打开回调 */ - (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo { NSLog(@"Receive one notification."); // 取得APNS通知内容 NSDictionary *aps = [userInfo valueForKey:@"aps"]; // 内容 NSString *content = [aps valueForKey:@"alert"]; // badge数量 NSInteger badge = [[aps valueForKey:@"badge"] integerValue]; // 播放声音 NSString *sound = [aps valueForKey:@"sound"]; // 取得Extras字段内容 NSString *Extras = [userInfo valueForKey:@"Extras"]; //服务端中Extras字段,key是自己定义的 NSLog(@"content = [%@], badge = [%ld], sound = [%@], Extras = [%@]", content, (long)badge, sound, Extras); // iOS badge 清0 application.applicationIconBadgeNumber = 0; // 通知打开回执上报 // [CloudPushSDK handleReceiveRemoteNotification:userInfo];(Deprecated from v1.8.1) [CloudPushSDK sendNotificationAck:userInfo]; } - (void)initSound { CFURLRef okURL = (CFURLRef)CFBridgingRetain([NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"ok" ofType:@"wav"]]); CFURLRef noticeURL = (CFURLRef)CFBridgingRetain([NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"notice" ofType:@"wav"]]); CFURLRef errURL = (CFURLRef)CFBridgingRetain([NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"err" ofType:@"wav"]]); CFURLRef alarmURL = (CFURLRef)CFBridgingRetain([NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"alarm" ofType:@"wav"]]); CFURLRef ringURL = (CFURLRef)CFBridgingRetain([NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"notice" ofType:@"wav"]]); AudioServicesCreateSystemSoundID(okURL, &okSound); AudioServicesCreateSystemSoundID(noticeURL, ¬iceSound); AudioServicesCreateSystemSoundID(errURL, &errorSound); AudioServicesCreateSystemSoundID(alarmURL, &alarmSound); AudioServicesCreateSystemSoundID(ringURL, &ringSound); AudioServicesPropertyID flag = 0; //0 means always play AudioServicesSetProperty(kAudioServicesPropertyIsUISound, sizeof(SystemSoundID), &okSound, sizeof(AudioServicesPropertyID), &flag); AudioServicesSetProperty(kAudioServicesPropertyIsUISound, sizeof(SystemSoundID), ¬iceSound, sizeof(AudioServicesPropertyID), &flag); AudioServicesSetProperty(kAudioServicesPropertyIsUISound, sizeof(SystemSoundID), &errorSound, sizeof(AudioServicesPropertyID), &flag); AudioServicesSetProperty(kAudioServicesPropertyIsUISound, sizeof(SystemSoundID), &alarmSound, sizeof(AudioServicesPropertyID), &flag); AudioServicesSetProperty(kAudioServicesPropertyIsUISound, sizeof(SystemSoundID), &ringSound, sizeof(AudioServicesPropertyID), &flag); CFBridgingRelease(okURL); CFBridgingRelease(noticeURL); CFBridgingRelease(errURL); CFBridgingRelease(alarmURL); CFBridgingRelease(ringURL); } - (void)playSoundWith:(NSInteger)mode { dispatch_async(dispatch_get_main_queue(), ^{//转到主线程处理 if ([MPMusicPlayerController systemMusicPlayer].playbackState == MPMusicPlaybackStatePlaying) { NSLog(@"play ServicesPlayAlertSound ..."); switch (mode) { case SoundOK: AudioServicesPlayAlertSound(self->okSound); break; case SoundNotice: AudioServicesPlayAlertSound(self->noticeSound); break; case SoundError: AudioServicesPlayAlertSound(self->errorSound); break; case SoundAlarm: AudioServicesPlayAlertSound(self->alarmSound); break; case SoundRing: AudioServicesPlayAlertSound(self->ringSound); break; default: break; } } else { NSLog(@"play ServicesPlaySystemSound ..."); switch (mode) { case SoundOK: AudioServicesPlaySystemSound(self->okSound); break; case SoundNotice: AudioServicesPlaySystemSound(self->noticeSound); break; case SoundError: AudioServicesPlaySystemSound(self->errorSound); break; case SoundAlarm: AudioServicesPlayAlertSound(self->alarmSound); break; case SoundRing: AudioServicesPlayAlertSound(self->ringSound); break; default: break; } } }); } - (void)ring { if (!self.isBack)[self playaudio]; //if (!self.isBack)[self playSoundWith:SoundRing]; } - (void)ring_stop { if(self.audioPlayer != nil) { [self.audioPlayer stop]; self.audioPlayer = nil; } AVAudioSession *session = [AVAudioSession sharedInstance]; [session setActive:YES error:nil]; [session setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; } - (void)playaudio { AVAudioSession *session = [AVAudioSession sharedInstance]; [session setActive:YES error:nil]; [session setCategory:AVAudioSessionCategoryPlayback error:nil]; //播放背景音乐 NSString *musicPath = [[NSBundle mainBundle] pathForResource:@"ring1" ofType:@"mp3"]; NSURL *url = [[NSURL alloc] initFileURLWithPath:musicPath]; // 创建播放器 self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; //[url release]; [self.audioPlayer prepareToPlay]; [self.audioPlayer setVolume:.5]; self.audioPlayer.numberOfLoops = -1; //设置音乐播放次数 -1为一直循环 [self.audioPlayer play]; //播放 NSLog(@"playaudio"); } - (void)OpenDoorSucc:(NSString *)equid{ if(self.callOut){ [self.callOut alert:@"开门成功"]; } [self playSoundWith:SoundOK]; [self.sysinfo SaveRecord:[Sformat timestamp] Type:@"开门" Equ:equid Img:@"" Note:@"成功"]; } - (void)OpenDoorFail:(NSString *)equid{ if(self.callOut){ [self.callOut alert:@"开门失败"]; NSLog(@"通话中开门失败"); } [self playSoundWith:SoundError]; [self.sysinfo SaveRecord:[Sformat timestamp] Type:@"开门" Equ:equid Img:@"" Note:@"失败"]; } @end