diff --git a/OrderScheduling.xcworkspace/xcuserdata/zd.xcuserdatad/UserInterfaceState.xcuserstate b/OrderScheduling.xcworkspace/xcuserdata/zd.xcuserdatad/UserInterfaceState.xcuserstate index 2c94e42..597c8e0 100644 Binary files a/OrderScheduling.xcworkspace/xcuserdata/zd.xcuserdatad/UserInterfaceState.xcuserstate and b/OrderScheduling.xcworkspace/xcuserdata/zd.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/OrderScheduling.xcworkspace/xcuserdata/zd.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/OrderScheduling.xcworkspace/xcuserdata/zd.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index f148daf..40c2645 100644 --- a/OrderScheduling.xcworkspace/xcuserdata/zd.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/OrderScheduling.xcworkspace/xcuserdata/zd.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -497,22 +497,6 @@ landmarkType = "7"> - - - - @@ -1018,8 +1002,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescuePhotoController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "130" - endingLineNumber = "130" + startingLineNumber = "139" + endingLineNumber = "139" landmarkName = "viewDidLoad()" landmarkType = "7"> @@ -1034,8 +1018,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescuePhotoController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "109" - endingLineNumber = "109" + startingLineNumber = "118" + endingLineNumber = "118" landmarkName = "viewDidLoad()" landmarkType = "7"> @@ -1050,8 +1034,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescuePhotoController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "119" - endingLineNumber = "119" + startingLineNumber = "128" + endingLineNumber = "128" landmarkName = "viewDidLoad()" landmarkType = "7"> @@ -1072,22 +1056,6 @@ landmarkType = "7"> - - - - + + @@ -2261,70 +2244,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2687,8 +2526,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescuePhotoController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "98" - endingLineNumber = "98" + startingLineNumber = "107" + endingLineNumber = "107" landmarkName = "init(environmentPics:)" landmarkType = "7"> @@ -2703,8 +2542,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "814" - endingLineNumber = "814" + startingLineNumber = "823" + endingLineNumber = "823" landmarkName = "collectionView(_:didSelectItemAt:)" landmarkType = "7"> @@ -2797,8 +2636,8 @@ filePath = "OrderSchedulingNotificationService/NotificationService.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "48" - endingLineNumber = "48" + startingLineNumber = "47" + endingLineNumber = "47" landmarkName = "didReceive(_:withContentHandler:)" landmarkType = "7"> @@ -3037,54 +2876,6 @@ - - - - - - - - - - - - @@ -3111,8 +2902,8 @@ filePath = "OrderScheduling/Global/Tool/Tool.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "212" - endingLineNumber = "212" + startingLineNumber = "207" + endingLineNumber = "207" landmarkName = "cycleVoice()" landmarkType = "7"> @@ -3127,8 +2918,8 @@ filePath = "OrderScheduling/Global/Tool/Tool.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "211" - endingLineNumber = "211" + startingLineNumber = "206" + endingLineNumber = "206" landmarkName = "cycleVoice()" landmarkType = "7"> @@ -3143,8 +2934,8 @@ filePath = "OrderScheduling/Global/Tool/Tool.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "213" - endingLineNumber = "213" + startingLineNumber = "208" + endingLineNumber = "208" landmarkName = "cycleVoice()" landmarkType = "7"> @@ -3197,5 +2988,21 @@ landmarkType = "7"> + + + + diff --git a/OrderScheduling/Global/GroupData/GroupData.swift b/OrderScheduling/Global/GroupData/GroupData.swift index 261f3f7..83b12a1 100644 --- a/OrderScheduling/Global/GroupData/GroupData.swift +++ b/OrderScheduling/Global/GroupData/GroupData.swift @@ -13,6 +13,16 @@ open class GroupData { public static let `default` = GroupData() let groudUserDefault = UserDefaults(suiteName: GROUPID) + // 判断新推送是不是新订单 + func isOrderPushNotification(userInfo:[AnyHashable:Any]?) -> Bool { + if let userInfo { + if let aps = userInfo[pushNoti_aps_key] as? [String:Any], let dict = (aps[pushNoti_alert_key] as? Dictionary), (dict[pushNoti_title_key] as? String) == pushNoti_newOrder_key { + return true + } + } + return false + } + // 不需要记录 public var bestAttemptContentUserInfo : [AnyHashable:Any]? { return groudUserDefault?.object(forKey: bestAttemptContentUserInfo_key) as? [AnyHashable:Any] diff --git a/OrderScheduling/Global/Tool/Tool.swift b/OrderScheduling/Global/Tool/Tool.swift index 2508716..577143d 100644 --- a/OrderScheduling/Global/Tool/Tool.swift +++ b/OrderScheduling/Global/Tool/Tool.swift @@ -138,19 +138,17 @@ open class Tool { return "未知" } + // MARK: 远程推送相关 func getOrderString(userInfo:[AnyHashable:Any]?) -> String{ var string : String = "" - if let userInfo { - let aps = userInfo["aps"] as? [String:Any] - if let aps, (aps["alert"] as? String) == "新订单" { - let juheVehcileName = userInfo["juheVehcileName"] as? String - let taskCode = userInfo["taskCode"] as? String - if juheVehcileName?.isEmpty == false { - string = "您有一条新的聚合订单\(taskCode ?? "")" - }else{ - string = "您有一条新订单\(taskCode ?? "")" - } + if GROUP.isOrderPushNotification(userInfo: userInfo) == true { + let taskCode = userInfo?[pushNoti_taskCode_key] as? String + let juheVehcileName = userInfo?[pushNoti_juheVehcileName_key] as? String + if juheVehcileName?.isEmpty == false { + string = "您有一条新的聚合订单\(taskCode ?? "")" + }else{ + string = "您有一条新订单\(taskCode ?? "")" } } @@ -183,25 +181,22 @@ open class Tool { return } - if let userInfo { - let aps = userInfo[aps_key] as? [String:Any] - if let aps, (aps[alert_key] as? String) == "新订单" { - let juheVehcileName = userInfo[juheVehcileName_key] as? String - var auidoUrl : URL? - if juheVehcileName?.isEmpty == false { - auidoUrl = URL(string: Bundle.main.path(forResource: juheNewOrderAudio_key, ofType: nil) ?? "") - }else{ - auidoUrl = URL(string: Bundle.main.path(forResource: newOrderAudio_key, ofType: nil) ?? "") - } - - if let auidoUrl { - var audioSoundID:SystemSoundID = 0 - AudioServicesCreateSystemSoundID(auidoUrl as CFURL, &audioSoundID) - systemSoundID = audioSoundID - needPlayAudio = true - soundCount = 0 - cycleVoice() - } + if GROUP.isOrderPushNotification(userInfo: userInfo) == true { + let juheVehcileName = userInfo?[pushNoti_juheVehcileName_key] as? String + var auidoUrl : URL? + if juheVehcileName?.isEmpty == false { + auidoUrl = URL(string: Bundle.main.path(forResource: juheNewOrderAudio_key, ofType: nil) ?? "") + }else{ + auidoUrl = URL(string: Bundle.main.path(forResource: newOrderAudio_key, ofType: nil) ?? "") + } + + if let auidoUrl { + var audioSoundID:SystemSoundID = 0 + AudioServicesCreateSystemSoundID(auidoUrl as CFURL, &audioSoundID) + systemSoundID = audioSoundID + needPlayAudio = true + soundCount = 0 + cycleVoice() } } } diff --git a/OrderScheduling/Rescue/ViewController/RescueController.swift b/OrderScheduling/Rescue/ViewController/RescueController.swift index 62ab27b..701cabc 100644 --- a/OrderScheduling/Rescue/ViewController/RescueController.swift +++ b/OrderScheduling/Rescue/ViewController/RescueController.swift @@ -792,14 +792,23 @@ extension RescuePendingDispatchController : UICollectionViewDelegate, UICollecti let imageUrlStr = environmentPics[indexPath.item] cell!.imageView.image = nil if imageUrlStr.contains(".mp4?") == true { - DispatchQueue.global().async { - let image = DDImage.dd_thumbnailImage(forVideo: URL(string: imageUrlStr)!).dd_compress(withQulitySize: 5 * 1024) - DispatchQueue.main.async { - cell!.imageView.image = image + if let url = URL(string: imageUrlStr) { + DispatchQueue.global().async { + DDImage.dd_thumbnailImage(forVideo: url) { (thumbnailImage, _, _) in + let image = thumbnailImage?.dd_compress(withQulitySize: 5 * 1024) + DispatchQueue.main.async { + cell!.imageView.image = image + } + } + } + + DispatchQueue.global().async { + let cmTime = TOOL.getDuration(url: url) + DispatchQueue.main.async { + cell!.dateLabel.text = TOOL.getVideoDateString(duration: Int(cmTime.seconds)) + } } } - let cmTime = TOOL.getDuration(url: URL(string: imageUrlStr)!) - cell!.dateLabel.text = TOOL.getVideoDateString(duration: Int(cmTime.seconds)) }else{ cell!.imageView.sd_setImage(with: URL(string: imageUrlStr)) cell!.dateLabel.text = nil diff --git a/OrderScheduling/Rescue/ViewController/RescuePhotoController.swift b/OrderScheduling/Rescue/ViewController/RescuePhotoController.swift index 9fbb664..23d897b 100644 --- a/OrderScheduling/Rescue/ViewController/RescuePhotoController.swift +++ b/OrderScheduling/Rescue/ViewController/RescuePhotoController.swift @@ -24,14 +24,23 @@ extension RescuePhotoController : UICollectionViewDelegate,UICollectionViewDataS cell?.imageView.image = nil if model.url.contains(".mp4?") == true { - DispatchQueue.global().async { - let image = DDImage.dd_thumbnailImage(forVideo: URL(string: model.url)!) - DispatchQueue.main.async { - cell!.imageView.image = image - } - } - let cmTime = TOOL.getDuration(url: URL(string: model.url)!) - cell!.dateLabel.text = TOOL.getVideoDateString(duration: Int(cmTime.seconds)) + if let url = URL(string: model.url) { + DispatchQueue.global().async { + DDImage.dd_thumbnailImage(forVideo: url) { (thumbnailImage, _, _) in + let image = thumbnailImage?.dd_compress(withQulitySize: 5 * 1024) + DispatchQueue.main.async { + cell!.imageView.image = image + } + } + } + + DispatchQueue.global().async { + let cmTime = TOOL.getDuration(url: url) + DispatchQueue.main.async { + cell!.dateLabel.text = TOOL.getVideoDateString(duration: Int(cmTime.seconds)) + } + } + } }else{ cell!.imageView.sd_setImage(with: URL(string: model.url)) cell!.dateLabel.text = nil diff --git a/OrderScheduling/Strings/CommonKeyStrings.swift b/OrderScheduling/Strings/CommonKeyStrings.swift index b858224..a272c41 100644 --- a/OrderScheduling/Strings/CommonKeyStrings.swift +++ b/OrderScheduling/Strings/CommonKeyStrings.swift @@ -7,12 +7,22 @@ import Foundation -public let aps_key = "aps" +// 远程推送的键,字符串为后台定义,切勿更改 +public let pushNoti_aps_key = "aps" -public let alert_key = "alert" +public let pushNoti_alert_key = "alert" -public let juheVehcileName_key = "juheVehcileName" +public let pushNoti_title_key = "title" +public let pushNoti_body_key = "body" + +public let pushNoti_juheVehcileName_key = "juheVehcileName" + +public let pushNoti_taskCode_key = "taskCode" + +public let pushNoti_newOrder_key = "新订单" + +// 本地音频的键 public let juheNewOrderAudio_key = "juheNewOrderAudio.wav" public let newOrderAudio_key = "newOrderAudio.wav" diff --git a/OrderSchedulingNotificationService/NotificationService.swift b/OrderSchedulingNotificationService/NotificationService.swift index 8089804..f0e08aa 100644 --- a/OrderSchedulingNotificationService/NotificationService.swift +++ b/OrderSchedulingNotificationService/NotificationService.swift @@ -23,11 +23,10 @@ class NotificationService: UNNotificationServiceExtension { let userInfo = bestAttemptContent.userInfo // 只有订单类型才写入group,因为需要弹窗和声音 - let aps = userInfo[aps_key] as? [String:Any] - if let aps, (aps[alert_key] as? String) == "新订单" { + if GROUP.isOrderPushNotification(userInfo: userInfo) == true { var sound : UNNotificationSound? - let juheVehcileName = userInfo[juheVehcileName_key] as? String + let juheVehcileName = userInfo[pushNoti_juheVehcileName_key] as? String if juheVehcileName?.isEmpty == false { sound = UNNotificationSound(named: UNNotificationSoundName(rawValue: juheNewOrderAudio_key)) }else{