This commit is contained in:
DDIsFriend
2023-09-06 15:17:24 +08:00
parent 177b77c044
commit 7fda9d2650
37 changed files with 9331 additions and 8117 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@@ -33,6 +33,8 @@
791887C12A839784007EA0C1 /* RefuseOrderEntryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887C02A839784007EA0C1 /* RefuseOrderEntryView.swift */; }; 791887C12A839784007EA0C1 /* RefuseOrderEntryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887C02A839784007EA0C1 /* RefuseOrderEntryView.swift */; };
791887C42A84BFDB007EA0C1 /* Tool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887C32A84BFDB007EA0C1 /* Tool.swift */; }; 791887C42A84BFDB007EA0C1 /* Tool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887C32A84BFDB007EA0C1 /* Tool.swift */; };
791887C62A84D9DF007EA0C1 /* DispatchOrderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887C52A84D9DF007EA0C1 /* DispatchOrderController.swift */; }; 791887C62A84D9DF007EA0C1 /* DispatchOrderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887C52A84D9DF007EA0C1 /* DispatchOrderController.swift */; };
792EE0952AA74E0A00A212AB /* PushNotiCommonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 792EE0942AA74E0A00A212AB /* PushNotiCommonView.swift */; };
792EE0972AA74E5800A212AB /* PushNotiCommonTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 792EE0962AA74E5800A212AB /* PushNotiCommonTool.swift */; };
794FBB0D2A8F040D00D57BB8 /* HistoryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB0C2A8F040D00D57BB8 /* HistoryController.swift */; }; 794FBB0D2A8F040D00D57BB8 /* HistoryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB0C2A8F040D00D57BB8 /* HistoryController.swift */; };
794FBB142A8F045F00D57BB8 /* MineController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB132A8F045F00D57BB8 /* MineController.swift */; }; 794FBB142A8F045F00D57BB8 /* MineController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB132A8F045F00D57BB8 /* MineController.swift */; };
794FBB162A8F1A3300D57BB8 /* RescuePhotoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB152A8F1A3300D57BB8 /* RescuePhotoController.swift */; }; 794FBB162A8F1A3300D57BB8 /* RescuePhotoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB152A8F1A3300D57BB8 /* RescuePhotoController.swift */; };
@@ -41,6 +43,7 @@
794FBB1F2A92F7C300D57BB8 /* WebViewTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB1E2A92F7C300D57BB8 /* WebViewTool.swift */; }; 794FBB1F2A92F7C300D57BB8 /* WebViewTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB1E2A92F7C300D57BB8 /* WebViewTool.swift */; };
794FBB212A934E0A00D57BB8 /* AppUpdateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB202A934E0A00D57BB8 /* AppUpdateView.swift */; }; 794FBB212A934E0A00D57BB8 /* AppUpdateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB202A934E0A00D57BB8 /* AppUpdateView.swift */; };
794FBB232A93519800D57BB8 /* AppUpdateTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB222A93519800D57BB8 /* AppUpdateTool.swift */; }; 794FBB232A93519800D57BB8 /* AppUpdateTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB222A93519800D57BB8 /* AppUpdateTool.swift */; };
79CB07CC2AA8465A00154B61 /* UserPermission.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79CB07CB2AA8465A00154B61 /* UserPermission.swift */; };
79CECC122A89BD1A00B95D8B /* MessageCenterController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79CECC112A89BD1A00B95D8B /* MessageCenterController.swift */; }; 79CECC122A89BD1A00B95D8B /* MessageCenterController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79CECC112A89BD1A00B95D8B /* MessageCenterController.swift */; };
79CECC192A89EE6A00B95D8B /* ReviewFailedController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79CECC182A89EE6A00B95D8B /* ReviewFailedController.swift */; }; 79CECC192A89EE6A00B95D8B /* ReviewFailedController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79CECC182A89EE6A00B95D8B /* ReviewFailedController.swift */; };
79CECC1B2A89F83800B95D8B /* AdditionalPhotoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79CECC1A2A89F83800B95D8B /* AdditionalPhotoController.swift */; }; 79CECC1B2A89F83800B95D8B /* AdditionalPhotoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79CECC1A2A89F83800B95D8B /* AdditionalPhotoController.swift */; };
@@ -129,6 +132,8 @@
791887C02A839784007EA0C1 /* RefuseOrderEntryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefuseOrderEntryView.swift; sourceTree = "<group>"; }; 791887C02A839784007EA0C1 /* RefuseOrderEntryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefuseOrderEntryView.swift; sourceTree = "<group>"; };
791887C32A84BFDB007EA0C1 /* Tool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tool.swift; sourceTree = "<group>"; }; 791887C32A84BFDB007EA0C1 /* Tool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tool.swift; sourceTree = "<group>"; };
791887C52A84D9DF007EA0C1 /* DispatchOrderController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DispatchOrderController.swift; sourceTree = "<group>"; }; 791887C52A84D9DF007EA0C1 /* DispatchOrderController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DispatchOrderController.swift; sourceTree = "<group>"; };
792EE0942AA74E0A00A212AB /* PushNotiCommonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushNotiCommonView.swift; sourceTree = "<group>"; };
792EE0962AA74E5800A212AB /* PushNotiCommonTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushNotiCommonTool.swift; sourceTree = "<group>"; };
794FBB0C2A8F040D00D57BB8 /* HistoryController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoryController.swift; sourceTree = "<group>"; }; 794FBB0C2A8F040D00D57BB8 /* HistoryController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoryController.swift; sourceTree = "<group>"; };
794FBB132A8F045F00D57BB8 /* MineController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MineController.swift; sourceTree = "<group>"; }; 794FBB132A8F045F00D57BB8 /* MineController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MineController.swift; sourceTree = "<group>"; };
794FBB152A8F1A3300D57BB8 /* RescuePhotoController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RescuePhotoController.swift; sourceTree = "<group>"; }; 794FBB152A8F1A3300D57BB8 /* RescuePhotoController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RescuePhotoController.swift; sourceTree = "<group>"; };
@@ -137,6 +142,7 @@
794FBB1E2A92F7C300D57BB8 /* WebViewTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebViewTool.swift; sourceTree = "<group>"; }; 794FBB1E2A92F7C300D57BB8 /* WebViewTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebViewTool.swift; sourceTree = "<group>"; };
794FBB202A934E0A00D57BB8 /* AppUpdateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppUpdateView.swift; sourceTree = "<group>"; }; 794FBB202A934E0A00D57BB8 /* AppUpdateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppUpdateView.swift; sourceTree = "<group>"; };
794FBB222A93519800D57BB8 /* AppUpdateTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppUpdateTool.swift; sourceTree = "<group>"; }; 794FBB222A93519800D57BB8 /* AppUpdateTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppUpdateTool.swift; sourceTree = "<group>"; };
79CB07CB2AA8465A00154B61 /* UserPermission.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserPermission.swift; sourceTree = "<group>"; };
79CECC112A89BD1A00B95D8B /* MessageCenterController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageCenterController.swift; sourceTree = "<group>"; }; 79CECC112A89BD1A00B95D8B /* MessageCenterController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageCenterController.swift; sourceTree = "<group>"; };
79CECC182A89EE6A00B95D8B /* ReviewFailedController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewFailedController.swift; sourceTree = "<group>"; }; 79CECC182A89EE6A00B95D8B /* ReviewFailedController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewFailedController.swift; sourceTree = "<group>"; };
79CECC1A2A89F83800B95D8B /* AdditionalPhotoController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdditionalPhotoController.swift; sourceTree = "<group>"; }; 79CECC1A2A89F83800B95D8B /* AdditionalPhotoController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdditionalPhotoController.swift; sourceTree = "<group>"; };
@@ -252,6 +258,8 @@
791887C02A839784007EA0C1 /* RefuseOrderEntryView.swift */, 791887C02A839784007EA0C1 /* RefuseOrderEntryView.swift */,
79FB75ED2A9898EB00DB00A4 /* AcceptOrderView.swift */, 79FB75ED2A9898EB00DB00A4 /* AcceptOrderView.swift */,
79FB75EF2A98A26C00DB00A4 /* AcceptOrderTool.swift */, 79FB75EF2A98A26C00DB00A4 /* AcceptOrderTool.swift */,
792EE0942AA74E0A00A212AB /* PushNotiCommonView.swift */,
792EE0962AA74E5800A212AB /* PushNotiCommonTool.swift */,
); );
path = View; path = View;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -383,6 +391,7 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
791887AD2A80F943007EA0C1 /* UserData.swift */, 791887AD2A80F943007EA0C1 /* UserData.swift */,
79CB07CB2AA8465A00154B61 /* UserPermission.swift */,
); );
path = User; path = User;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -954,6 +963,7 @@
79FB761C2A9EEC3700DB00A4 /* GroupData.swift in Sources */, 79FB761C2A9EEC3700DB00A4 /* GroupData.swift in Sources */,
79FB76172A9DFC9600DB00A4 /* NotificationSetUpController.swift in Sources */, 79FB76172A9DFC9600DB00A4 /* NotificationSetUpController.swift in Sources */,
79CECC262A8C749B00B95D8B /* VehicleMonitorVideoController.swift in Sources */, 79CECC262A8C749B00B95D8B /* VehicleMonitorVideoController.swift in Sources */,
792EE0952AA74E0A00A212AB /* PushNotiCommonView.swift in Sources */,
794FBB212A934E0A00D57BB8 /* AppUpdateView.swift in Sources */, 794FBB212A934E0A00D57BB8 /* AppUpdateView.swift in Sources */,
79DD0DB42A95F00B00768FE7 /* Extension.swift in Sources */, 79DD0DB42A95F00B00768FE7 /* Extension.swift in Sources */,
791887802A7CE6F1007EA0C1 /* UserDefaultStrings.swift in Sources */, 791887802A7CE6F1007EA0C1 /* UserDefaultStrings.swift in Sources */,
@@ -985,7 +995,9 @@
79CECC122A89BD1A00B95D8B /* MessageCenterController.swift in Sources */, 79CECC122A89BD1A00B95D8B /* MessageCenterController.swift in Sources */,
794FBB1F2A92F7C300D57BB8 /* WebViewTool.swift in Sources */, 794FBB1F2A92F7C300D57BB8 /* WebViewTool.swift in Sources */,
791887822A7CE71D007EA0C1 /* AppKeyStrings.swift in Sources */, 791887822A7CE71D007EA0C1 /* AppKeyStrings.swift in Sources */,
79CB07CC2AA8465A00154B61 /* UserPermission.swift in Sources */,
79CECC282A8CADEA00B95D8B /* VehicleMonitoringVideoDetailController.swift in Sources */, 79CECC282A8CADEA00B95D8B /* VehicleMonitoringVideoDetailController.swift in Sources */,
792EE0972AA74E5800A212AB /* PushNotiCommonTool.swift in Sources */,
79FB75F02A98A26C00DB00A4 /* AcceptOrderTool.swift in Sources */, 79FB75F02A98A26C00DB00A4 /* AcceptOrderTool.swift in Sources */,
791887A12A80CA10007EA0C1 /* ApiList.swift in Sources */, 791887A12A80CA10007EA0C1 /* ApiList.swift in Sources */,
791887AE2A80F943007EA0C1 /* UserData.swift in Sources */, 791887AE2A80F943007EA0C1 /* UserData.swift in Sources */,

View File

@@ -253,8 +253,8 @@
filePath = "OrderScheduling/Main/Initial.swift" filePath = "OrderScheduling/Main/Initial.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "127" startingLineNumber = "155"
endingLineNumber = "127" endingLineNumber = "155"
landmarkName = "networkErrorHandler(response:)" landmarkName = "networkErrorHandler(response:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -269,8 +269,8 @@
filePath = "OrderScheduling/Main/Initial.swift" filePath = "OrderScheduling/Main/Initial.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "128" startingLineNumber = "156"
endingLineNumber = "128" endingLineNumber = "156"
landmarkName = "Initial" landmarkName = "Initial"
landmarkType = "21"> landmarkType = "21">
<Locations> <Locations>
@@ -317,8 +317,8 @@
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "599" startingLineNumber = "636"
endingLineNumber = "599" endingLineNumber = "636"
landmarkName = "tableView(_:cellForRowAt:)" landmarkName = "tableView(_:cellForRowAt:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -526,6 +526,21 @@
endingLineNumber = "35" endingLineNumber = "35"
offsetFromSymbolStart = "504"> offsetFromSymbolStart = "504">
</Location> </Location>
<Location
uuid = "F60CEE6A-AA19-4BDA-96D1-8F3B46A87FF5 - 7f2f3b14f8e01946"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "+[UIImage(DDCategory) dd_thumbnailImageForVideo:]"
moduleName = "OrderSchedulingNotificationService"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/zd/Desktop/%E4%B8%AD%E9%81%93%E6%95%91%E6%8F%B4/OrderScheduling/Pods/DDCategoryKit_Private/DDCategoryKit_Private/Classes/UIImage+DDCategory/UIImage+DDCategory.m"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "35"
endingLineNumber = "35"
offsetFromSymbolStart = "504">
</Location>
</Locations> </Locations>
</BreakpointContent> </BreakpointContent>
</BreakpointProxy> </BreakpointProxy>
@@ -539,8 +554,8 @@
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "844" startingLineNumber = "933"
endingLineNumber = "844" endingLineNumber = "933"
landmarkName = "collectionView(_:cellForItemAt:)" landmarkName = "collectionView(_:cellForItemAt:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -1237,8 +1252,8 @@
filePath = "OrderScheduling/Main/AppDelegate.swift" filePath = "OrderScheduling/Main/AppDelegate.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "138" startingLineNumber = "149"
endingLineNumber = "138" endingLineNumber = "149"
landmarkName = "jpushNotificationAuthorization(_:withInfo:)" landmarkName = "jpushNotificationAuthorization(_:withInfo:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -1253,8 +1268,8 @@
filePath = "OrderScheduling/Main/AppDelegate.swift" filePath = "OrderScheduling/Main/AppDelegate.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "126" startingLineNumber = "137"
endingLineNumber = "126" endingLineNumber = "137"
landmarkName = "jpushNotificationCenter(_:didReceive:withCompletionHandler:)" landmarkName = "jpushNotificationCenter(_:didReceive:withCompletionHandler:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -1413,8 +1428,8 @@
filePath = "OrderScheduling/Main/Initial.swift" filePath = "OrderScheduling/Main/Initial.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "113" startingLineNumber = "138"
endingLineNumber = "113" endingLineNumber = "138"
landmarkName = "changeRootViewController(window:)" landmarkName = "changeRootViewController(window:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -1445,8 +1460,8 @@
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift" filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "256" startingLineNumber = "269"
endingLineNumber = "256" endingLineNumber = "269"
landmarkName = "reloadData()" landmarkName = "reloadData()"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -1509,8 +1524,8 @@
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "256" startingLineNumber = "241"
endingLineNumber = "256" endingLineNumber = "241"
landmarkName = "entry(model:remarkId:)" landmarkName = "entry(model:remarkId:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -1888,8 +1903,8 @@
filePath = "OrderScheduling/Main/AppDelegate.swift" filePath = "OrderScheduling/Main/AppDelegate.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "128" startingLineNumber = "139"
endingLineNumber = "128" endingLineNumber = "139"
landmarkName = "jpushNotificationCenter(_:didReceive:withCompletionHandler:)" landmarkName = "jpushNotificationCenter(_:didReceive:withCompletionHandler:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -2029,8 +2044,8 @@
filePath = "OrderScheduling/Main/Initial.swift" filePath = "OrderScheduling/Main/Initial.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "104" startingLineNumber = "129"
endingLineNumber = "104" endingLineNumber = "129"
landmarkName = "changeRootViewController(window:)" landmarkName = "changeRootViewController(window:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -2157,8 +2172,8 @@
filePath = "OrderScheduling/Main/Initial.swift" filePath = "OrderScheduling/Main/Initial.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "119" startingLineNumber = "147"
endingLineNumber = "119" endingLineNumber = "147"
landmarkName = "Initial" landmarkName = "Initial"
landmarkType = "3"> landmarkType = "3">
</BreakpointContent> </BreakpointContent>
@@ -2381,8 +2396,8 @@
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "855" startingLineNumber = "944"
endingLineNumber = "855" endingLineNumber = "944"
landmarkName = "collectionView(_:didSelectItemAt:)" landmarkName = "collectionView(_:didSelectItemAt:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -2465,22 +2480,6 @@
</Locations> </Locations>
</BreakpointContent> </BreakpointContent>
</BreakpointProxy> </BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "AE73D0A1-4B76-48CE-B9B1-7F631C9CBC4D"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderSchedulingNotificationService/NotificationService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "59"
endingLineNumber = "59"
landmarkName = "didReceive(_:withContentHandler:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy <BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent <BreakpointContent
@@ -2614,8 +2613,8 @@
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "331" startingLineNumber = "316"
endingLineNumber = "331" endingLineNumber = "316"
landmarkName = "addActions()" landmarkName = "addActions()"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -2630,8 +2629,8 @@
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "320" startingLineNumber = "305"
endingLineNumber = "320" endingLineNumber = "305"
landmarkName = "addActions()" landmarkName = "addActions()"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -2646,8 +2645,8 @@
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "322" startingLineNumber = "307"
endingLineNumber = "322" endingLineNumber = "307"
landmarkName = "addActions()" landmarkName = "addActions()"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -2678,8 +2677,8 @@
filePath = "OrderSchedulingNotificationService/NotificationService.swift" filePath = "OrderSchedulingNotificationService/NotificationService.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "24" startingLineNumber = "29"
endingLineNumber = "24" endingLineNumber = "29"
landmarkName = "didReceive(_:withContentHandler:)" landmarkName = "didReceive(_:withContentHandler:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -2795,22 +2794,6 @@
</Locations> </Locations>
</BreakpointContent> </BreakpointContent>
</BreakpointProxy> </BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "553E1DED-598C-4AC7-AB8A-8E3A45E18CAD"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderSchedulingNotificationService/NotificationService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "53"
endingLineNumber = "53"
landmarkName = "didReceive(_:withContentHandler:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy <BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent <BreakpointContent
@@ -2837,8 +2820,8 @@
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "96" startingLineNumber = "74"
endingLineNumber = "96" endingLineNumber = "74"
landmarkName = "addActions()" landmarkName = "addActions()"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -2917,8 +2900,8 @@
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift" filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "255" startingLineNumber = "268"
endingLineNumber = "255" endingLineNumber = "268"
landmarkName = "reloadData()" landmarkName = "reloadData()"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -2933,8 +2916,8 @@
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift" filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "254" startingLineNumber = "267"
endingLineNumber = "254" endingLineNumber = "267"
landmarkName = "reloadData()" landmarkName = "reloadData()"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -2949,8 +2932,8 @@
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift" filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "210" startingLineNumber = "223"
endingLineNumber = "210" endingLineNumber = "223"
landmarkName = "viewDidLoad()" landmarkName = "viewDidLoad()"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -2965,8 +2948,8 @@
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift" filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "204" startingLineNumber = "217"
endingLineNumber = "204" endingLineNumber = "217"
landmarkName = "viewDidLoad()" landmarkName = "viewDidLoad()"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -3284,28 +3267,12 @@
filePath = "OrderScheduling/Main/SceneDelegate.swift" filePath = "OrderScheduling/Main/SceneDelegate.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "21" startingLineNumber = "22"
endingLineNumber = "21" endingLineNumber = "22"
landmarkName = "scene(_:willConnectTo:options:)" landmarkName = "scene(_:willConnectTo:options:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
</BreakpointProxy> </BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "DEC821E4-E165-42B8-9B0D-B4AE114BDCDA"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "77"
endingLineNumber = "77"
landmarkName = "addActions()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy <BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent <BreakpointContent
@@ -3316,8 +3283,8 @@
filePath = "OrderScheduling/Main/AppDelegate.swift" filePath = "OrderScheduling/Main/AppDelegate.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "137" startingLineNumber = "148"
endingLineNumber = "137" endingLineNumber = "148"
landmarkName = "jpushNotificationAuthorization(_:withInfo:)" landmarkName = "jpushNotificationAuthorization(_:withInfo:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -3332,8 +3299,8 @@
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "938" startingLineNumber = "1027"
endingLineNumber = "938" endingLineNumber = "1027"
landmarkName = "viewSafeAreaInsetsDidChange()" landmarkName = "viewSafeAreaInsetsDidChange()"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -3380,8 +3347,8 @@
filePath = "OrderScheduling/Main/SceneDelegate.swift" filePath = "OrderScheduling/Main/SceneDelegate.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "37" startingLineNumber = "38"
endingLineNumber = "37" endingLineNumber = "38"
landmarkName = "sceneDidBecomeActive(_:)" landmarkName = "sceneDidBecomeActive(_:)"
landmarkType = "7"> landmarkType = "7">
<Locations> <Locations>
@@ -3428,8 +3395,8 @@
filePath = "OrderScheduling/Main/SceneDelegate.swift" filePath = "OrderScheduling/Main/SceneDelegate.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "47" startingLineNumber = "50"
endingLineNumber = "47" endingLineNumber = "50"
landmarkName = "sceneWillResignActive(_:)" landmarkName = "sceneWillResignActive(_:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -3444,8 +3411,8 @@
filePath = "OrderScheduling/Main/SceneDelegate.swift" filePath = "OrderScheduling/Main/SceneDelegate.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "57" startingLineNumber = "60"
endingLineNumber = "57" endingLineNumber = "60"
landmarkName = "sceneWillEnterForeground(_:)" landmarkName = "sceneWillEnterForeground(_:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -3508,8 +3475,8 @@
filePath = "OrderScheduling/Main/SceneDelegate.swift" filePath = "OrderScheduling/Main/SceneDelegate.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "66" startingLineNumber = "69"
endingLineNumber = "66" endingLineNumber = "69"
landmarkName = "sceneDidEnterBackground(_:)" landmarkName = "sceneDidEnterBackground(_:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -3540,8 +3507,8 @@
filePath = "OrderScheduling/Main/SceneDelegate.swift" filePath = "OrderScheduling/Main/SceneDelegate.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "59" startingLineNumber = "62"
endingLineNumber = "59" endingLineNumber = "62"
landmarkName = "sceneWillEnterForeground(_:)" landmarkName = "sceneWillEnterForeground(_:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -3620,8 +3587,8 @@
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift" filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "188" startingLineNumber = "201"
endingLineNumber = "188" endingLineNumber = "201"
landmarkName = "init(nibName:bundle:)" landmarkName = "init(nibName:bundle:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
@@ -3818,5 +3785,357 @@
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
</BreakpointProxy> </BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "C112368C-5489-4A98-B486-24FA04C3A0D8"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderScheduling/Main/AppDelegate.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "101"
endingLineNumber = "101"
landmarkName = "jpushNotificationCenter(_:willPresent:withCompletionHandler:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "BDC90EDD-76EB-4C9D-8369-70759BAB0AC2"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderSchedulingNotificationService/NotificationService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "31"
endingLineNumber = "31"
landmarkName = "didReceive(_:withContentHandler:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "43D1F3FB-438D-4EB9-8645-AFFEC27E2DFB"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderSchedulingNotificationService/NotificationService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "34"
endingLineNumber = "34"
landmarkName = "didReceive(_:withContentHandler:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "E0FB39F8-DE9F-4E80-AC1A-075CE1BC3F7C"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderSchedulingNotificationService/NotificationService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "37"
endingLineNumber = "37"
landmarkName = "didReceive(_:withContentHandler:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "698E6059-A3ED-42CC-B04D-BF240A541882"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderSchedulingNotificationService/NotificationService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "33"
endingLineNumber = "33"
landmarkName = "didReceive(_:withContentHandler:)"
landmarkType = "7">
<Locations>
<Location
uuid = "698E6059-A3ED-42CC-B04D-BF240A541882 - 70dd8776de7de34e"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "OrderSchedulingNotificationService.NotificationService.didReceive(_: __C.UNNotificationRequest, withContentHandler: (__C.UNNotificationContent) -&gt; ()) -&gt; ()"
moduleName = "OrderSchedulingNotificationService"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/zd/Desktop/%E4%B8%AD%E9%81%93%E6%95%91%E6%8F%B4/OrderScheduling/OrderSchedulingNotificationService/NotificationService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "28"
endingLineNumber = "28"
offsetFromSymbolStart = "908">
</Location>
<Location
uuid = "698E6059-A3ED-42CC-B04D-BF240A541882 - 70dd8776de7de34e"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "OrderSchedulingNotificationService.NotificationService.didReceive(_: __C.UNNotificationRequest, withContentHandler: (__C.UNNotificationContent) -&gt; ()) -&gt; ()"
moduleName = "OrderSchedulingNotificationService"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/zd/Desktop/%E4%B8%AD%E9%81%93%E6%95%91%E6%8F%B4/OrderScheduling/OrderSchedulingNotificationService/NotificationService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "28"
endingLineNumber = "28"
offsetFromSymbolStart = "1040">
</Location>
</Locations>
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "44E61B06-2A5A-4FFF-A4DB-42607CC96F32"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderSchedulingNotificationService/NotificationService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "64"
endingLineNumber = "64"
landmarkName = "didReceive(_:withContentHandler:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "8E0EC5F0-EC9A-4049-9CEC-5E240FFAA1B1"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderScheduling/Global/Tool/Tool.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "188"
endingLineNumber = "188"
landmarkName = "playVoiceWith(userInfo:)"
landmarkType = "7">
<Locations>
<Location
uuid = "8E0EC5F0-EC9A-4049-9CEC-5E240FFAA1B1 - 75ae0035b01e1adf"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "OrderScheduling.Tool.playVoiceWith(userInfo: Swift.Optional&lt;Swift.Dictionary&lt;Swift.AnyHashable, Any&gt;&gt;) -&gt; ()"
moduleName = "OrderScheduling"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/zd/Desktop/%E4%B8%AD%E9%81%93%E6%95%91%E6%8F%B4/OrderScheduling/OrderScheduling/Global/Tool/Tool.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "184"
endingLineNumber = "184"
offsetFromSymbolStart = "576">
</Location>
<Location
uuid = "8E0EC5F0-EC9A-4049-9CEC-5E240FFAA1B1 - 75ae0035b01e1adf"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "OrderScheduling.Tool.playVoiceWith(userInfo: Swift.Optional&lt;Swift.Dictionary&lt;Swift.AnyHashable, Any&gt;&gt;) -&gt; ()"
moduleName = "OrderScheduling"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/zd/Desktop/%E4%B8%AD%E9%81%93%E6%95%91%E6%8F%B4/OrderScheduling/OrderScheduling/Global/Tool/Tool.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "184"
endingLineNumber = "184"
offsetFromSymbolStart = "800">
</Location>
</Locations>
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "74782B60-419E-4A8D-A5EA-3E3D1A0CEF59"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderScheduling/Global/Tool/Tool.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "179"
endingLineNumber = "179"
landmarkName = "Tool"
landmarkType = "3">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "4DF97B7E-A042-4DCB-8976-E36DC0EE035A"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderScheduling/Main/AppDelegate.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "115"
endingLineNumber = "115"
landmarkName = "jpushNotificationCenter(_:willPresent:withCompletionHandler:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "13D4EEB2-43B5-4060-973F-6B3853959DB1"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderScheduling/Global/User/UserPermission.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "32"
endingLineNumber = "32"
landmarkName = "init()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "5EB1A9D1-06E4-4E1F-A715-D6D7E2C64DB8"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderScheduling/Main/Initial.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "73"
endingLineNumber = "73"
landmarkName = "initCall()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "D242BE6B-F51B-45F2-BFEA-829872E24978"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "857"
endingLineNumber = "857"
landmarkName = "tableView(_:cellForRowAt:)"
landmarkType = "7">
<Locations>
<Location
uuid = "D242BE6B-F51B-45F2-BFEA-829872E24978 - b8ab704301458127"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "OrderScheduling.RescueIsIngController.tableView(_: __C.UITableView, cellForRowAt: Foundation.IndexPath) -&gt; __C.UITableViewCell"
moduleName = "OrderScheduling"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/zd/Desktop/%E4%B8%AD%E9%81%93%E6%95%91%E6%8F%B4/OrderScheduling/OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "857"
endingLineNumber = "857"
offsetFromSymbolStart = "10851">
</Location>
<Location
uuid = "D242BE6B-F51B-45F2-BFEA-829872E24978 - a65e7ca50fc68a8"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "closure #5 (SnapKit.ConstraintMaker) -&gt; () in OrderScheduling.RescueIsIngController.tableView(_: __C.UITableView, cellForRowAt: Foundation.IndexPath) -&gt; __C.UITableViewCell"
moduleName = "OrderScheduling"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/zd/Desktop/%E4%B8%AD%E9%81%93%E6%95%91%E6%8F%B4/OrderScheduling/OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "858"
endingLineNumber = "858"
offsetFromSymbolStart = "77">
</Location>
</Locations>
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "9D2B5A65-D238-4600-B88F-FED82BC497D8"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "871"
endingLineNumber = "871"
landmarkName = "tableView(_:cellForRowAt:)"
landmarkType = "7">
<Locations>
<Location
uuid = "9D2B5A65-D238-4600-B88F-FED82BC497D8 - b8ab7043014587f1"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "OrderScheduling.RescueIsIngController.tableView(_: __C.UITableView, cellForRowAt: Foundation.IndexPath) -&gt; __C.UITableViewCell"
moduleName = "OrderScheduling"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/zd/Desktop/%E4%B8%AD%E9%81%93%E6%95%91%E6%8F%B4/OrderScheduling/OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "871"
endingLineNumber = "871"
offsetFromSymbolStart = "11587">
</Location>
<Location
uuid = "9D2B5A65-D238-4600-B88F-FED82BC497D8 - d42d1355e00f52fc"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "closure #7 (SnapKit.ConstraintMaker) -&gt; () in OrderScheduling.RescueIsIngController.tableView(_: __C.UITableView, cellForRowAt: Foundation.IndexPath) -&gt; __C.UITableViewCell"
moduleName = "OrderScheduling"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/zd/Desktop/%E4%B8%AD%E9%81%93%E6%95%91%E6%8F%B4/OrderScheduling/OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "872"
endingLineNumber = "872"
offsetFromSymbolStart = "35">
</Location>
</Locations>
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "D422F708-5DA3-46E1-AB61-4317909C58D9"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "876"
endingLineNumber = "876"
landmarkName = "tableView(_:cellForRowAt:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints> </Breakpoints>
</Bucket> </Bucket>

View File

@@ -232,6 +232,48 @@ open class Entry {
SwiftEntryKit.display(entry: view, using: attributes) SwiftEntryKit.display(entry: view, using: attributes)
} }
func showPushNotiCommonEntry(view:UIView,name:String? = nil) {
var attributes = EKAttributes()
attributes = .centerFloat
attributes.name = name
attributes.precedence = .override(priority: .min, dropEnqueuedEntries: false)
attributes.displayMode = .inferred
attributes.displayDuration = .infinity
attributes.screenBackground = .color(color: .clear)
attributes.entryBackground = .color(color: .white)
attributes.screenInteraction = .absorbTouches
attributes.entryInteraction = .absorbTouches
attributes.scroll = .disabled
attributes.entranceAnimation = .init(
translate: .init(
duration: 0.25,
spring: .init(damping: 1, initialVelocity: 0)
)
)
attributes.exitAnimation = .init(
translate: .init(duration: 0.25)
)
attributes.popBehavior = .animated(
animation: .init(
translate: .init(duration: 0.25)
)
)
attributes.shadow = .active(
with: .init(
color: .black,
opacity: 0.3,
radius: 6
)
)
attributes.positionConstraints = .init(verticalOffset:0,size:.init(width:EKAttributes.PositionConstraints.Edge.constant(value: auto(276)),height:EKAttributes.PositionConstraints.Edge.constant(value: auto(148))))
attributes.positionConstraints.safeArea = .overridden
attributes.positionConstraints.rotation.isEnabled = false
attributes.statusBar = .light
SwiftEntryKit.display(entry: view, using: attributes)
}
func showNotificationAuthEntry(view:UIView,name:String? = nil) { func showNotificationAuthEntry(view:UIView,name:String? = nil) {
var attributes = EKAttributes() var attributes = EKAttributes()
attributes = .centerFloat attributes = .centerFloat

View File

@@ -13,7 +13,7 @@ open class GroupData {
public static let `default` = GroupData() public static let `default` = GroupData()
let groudUserDefault = UserDefaults(suiteName: GROUPID) let groudUserDefault = UserDefaults(suiteName: GROUPID)
// //
func parserAlertToDictionary(userInfo:[AnyHashable:Any]?) -> Dictionary<String,String>? { func parserAlertToDictionary(userInfo:[AnyHashable:Any]?) -> Dictionary<String,String>? {
let aps = userInfo?[pushNoti_aps_key] as? [String:Any] let aps = userInfo?[pushNoti_aps_key] as? [String:Any]
@@ -44,6 +44,30 @@ open class GroupData {
return false return false
} }
//
func parserBroadcastToString(userInfo:[AnyHashable:Any]?) -> String? {
if let broadcastKeywords = (userInfo?[pushNoti_broadcastKeywords_key] as? String),broadcastKeywords.isEmpty == false {
return broadcastKeywords
}
return nil
}
// 广
func isBroadcastPushNotification(userInfo:[AnyHashable:Any]?) -> Bool {
if let broadcastKeywords = (userInfo?[pushNoti_broadcastKeywords_key] as? String),broadcastKeywords.isEmpty == false {
return true
}
return false
}
//
func isShowPopPushNotification(userInfo:[AnyHashable:Any]?) -> Bool {
if let isShowPop = (userInfo?[pushNoti_isShowPop_key] as? Bool),isShowPop == true {
return true
}
return false
}
// //
public var bestAttemptContentUserInfo : [AnyHashable:Any]? { public var bestAttemptContentUserInfo : [AnyHashable:Any]? {
return groudUserDefault?.object(forKey: bestAttemptContentUserInfo_key) as? [AnyHashable:Any] return groudUserDefault?.object(forKey: bestAttemptContentUserInfo_key) as? [AnyHashable:Any]

View File

@@ -158,8 +158,7 @@ open class Tool {
} }
func dealWithOrderPushNotification(completionHandler:(([AnyHashable:Any]) -> Void)?) { func dealWithOrderPushNotification(completionHandler:(([AnyHashable:Any]) -> Void)?) {
let userInfo = GROUP.bestAttemptContentUserInfo if let userInfo = GROUP.bestAttemptContentUserInfo {
if let userInfo {
if completionHandler != nil { if completionHandler != nil {
completionHandler!(userInfo) completionHandler!(userInfo)
} }
@@ -171,18 +170,20 @@ open class Tool {
if GROUP.newMessageAlert != true { if GROUP.newMessageAlert != true {
return return
} }
if GROUP.isOrderPushNotification(userInfo: userInfo) == true {
ACCEPTORDERTOOL.open(userInfo: userInfo) ACCEPTORDERTOOL.open(userInfo: userInfo)
}else{
PUSHNOTICOMMONTOOL.open(userInfo: userInfo)
}
} }
public var systemSoundID : SystemSoundID?
public var soundCount : Int = 0
public var needPlayAudio : Bool = true
func playVoiceWith(userInfo:[AnyHashable:Any]?) { func playVoiceWith(userInfo:[AnyHashable:Any]?) {
if GROUP.newMessageSound != true { if GROUP.newMessageSound != true {
return return
} }
stopVoice()
if GROUP.isOrderPushNotification(userInfo: userInfo) == true { if GROUP.isOrderPushNotification(userInfo: userInfo) == true {
let juheVehcileName = userInfo?[pushNoti_juheVehcileName_key] as? String let juheVehcileName = userInfo?[pushNoti_juheVehcileName_key] as? String
var auidoUrl : URL? var auidoUrl : URL?
@@ -193,34 +194,15 @@ open class Tool {
} }
if let auidoUrl { if let auidoUrl {
var audioSoundID:SystemSoundID = 0 DDAS.playSound(audioUrl: auidoUrl,name: "sound",numberOfLoops: 10,timeInterval: 2)
AudioServicesCreateSystemSoundID(auidoUrl as CFURL, &audioSoundID)
systemSoundID = audioSoundID
needPlayAudio = true
soundCount = 0
cycleVoice()
} }
} }else if GROUP.isBroadcastPushNotification(userInfo: userInfo) == true, let broadcast = GROUP.parserBroadcastToString(userInfo: userInfo) {
} DDSS.play(text: broadcast, name: "broadcast")
func cycleVoice() {
if let systemSoundID, soundCount < 10, needPlayAudio == true {
AudioServicesPlaySystemSoundWithCompletion(systemSoundID) {[weak self] in
self?.soundCount+=1
DispatchQueue.global().asyncAfter(deadline: .now() + 2, execute: {[weak self] in
self?.cycleVoice()
})
}
}else{
systemSoundID = nil
} }
} }
func stopVoice() { func stopVoice() {
if let systemSoundID { DDAS.stopSound(name: "sound")
needPlayAudio = false DDSS.stop(name: "broadcast")
soundCount = 0
AudioServicesDisposeSystemSoundID(systemSoundID)
}
} }
} }

View File

@@ -0,0 +1,102 @@
//
// UserPermission.swift
// OrderScheduling
//
// Created by on 2023/9/6.
//
import Foundation
import RxSwift
import RxRelay
public let USERP = UserPermission.default
open class UserPermission {
public static let `default` = UserPermission()
public let relay = ReplayRelay<Any?>.create(bufferSize: 1)
public let disposeBag = DisposeBag()
public var userPermissionRelay = ReplayRelay<Array<String>?>.create(bufferSize: 1)
public var canRejectDispatchHandle : Bool = false
public var canAcceptDispatchHandle : Bool = false
public var canWaitdispatchBtn : Bool = false
public var canWaitModifyDispatchBtn : Bool = false
public var canDealWith : Bool = false
public var canSupplierRemarkBtn : Bool = false
public var canSupplierAuditEditCostBtn : Bool = false
public var canSupplierAuditUploadPhotoBtn : Bool = false
init() {
Observable.combineLatest(relay, USER.refreshTokenSub)
.flatMapLatest { (_,_) in
return RQ.userOperationPermissions()
}
.subscribe(onNext: {[weak self] response in
self?.canRejectDispatchHandle = false
if response?.data?.contains(where: { value in
value == UserOperationPermissionsDataModel.DataEnum.rejectDispatchHandle.rawValue
}) == true {
self?.canRejectDispatchHandle = true
}
self?.canAcceptDispatchHandle = false
if response?.data?.contains(where: { value in
value == UserOperationPermissionsDataModel.DataEnum.acceptDispatchHandle.rawValue
}) == true {
self?.canAcceptDispatchHandle = true
}
self?.canWaitdispatchBtn = false
if response?.data?.contains(where: { value in
value == UserOperationPermissionsDataModel.DataEnum.waitdispatchBtn.rawValue
}) == true {
self?.canWaitdispatchBtn = true
}
self?.canWaitModifyDispatchBtn = false
if response?.data?.contains(where: { value in
value == UserOperationPermissionsDataModel.DataEnum.waitModifyDispatchBtn.rawValue
}) == true {
self?.canWaitModifyDispatchBtn = true
}
self?.canWaitModifyDispatchBtn = false
if response?.data?.contains(where: { value in
value == UserOperationPermissionsDataModel.DataEnum.waitModifyDispatchBtn.rawValue
}) == true {
self?.canWaitModifyDispatchBtn = true
}
self?.canDealWith = false
if response?.data?.contains(where: { value in
value == UserOperationPermissionsDataModel.DataEnum.dealWith.rawValue
}) == true {
self?.canDealWith = true
}
self?.canSupplierRemarkBtn = false
if response?.data?.contains(where: { value in
value == UserOperationPermissionsDataModel.DataEnum.supplierRemarkBtn.rawValue
}) == true {
self?.canSupplierRemarkBtn = true
}
self?.canSupplierAuditEditCostBtn = false
if response?.data?.contains(where: { value in
value == UserOperationPermissionsDataModel.DataEnum.supplierAuditEditCostBtn.rawValue
}) == true {
self?.canSupplierAuditEditCostBtn = true
}
self?.canSupplierAuditUploadPhotoBtn = false
if response?.data?.contains(where: { value in
value == UserOperationPermissionsDataModel.DataEnum.supplierAuditUploadPhotoBtn.rawValue
}) == true {
self?.canSupplierAuditUploadPhotoBtn = true
}
self?.userPermissionRelay.accept(response?.data)
})
.disposed(by: disposeBag)
}
}

View File

@@ -130,6 +130,13 @@ extension HistoryItemController {
.disposed(by: disposeBag) .disposed(by: disposeBag)
historyItemView.tableView.mj_header?.beginRefreshing() historyItemView.tableView.mj_header?.beginRefreshing()
USERP.userPermissionRelay
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] _ in
self?.historyItemView.tableView.reloadData()
})
.disposed(by: disposeBag)
} }
} }
@@ -221,6 +228,44 @@ extension HistoryItemController : UITableViewDelegate, UITableViewDataSource {
WEBTOOL.open(name: .supplySettlement, appending: "&queryType=\(OrderTypeEnum.UNCLOSED_ORDER.rawValue)&userOrderId=\(model.userOrderId)&orderCode=\(model.orderCode)&taskOrderId=\(model.taskOrderId)") WEBTOOL.open(name: .supplySettlement, appending: "&queryType=\(OrderTypeEnum.UNCLOSED_ORDER.rawValue)&userOrderId=\(model.userOrderId)&orderCode=\(model.orderCode)&taskOrderId=\(model.taskOrderId)")
}) })
.disposed(by: cell!.disposeBag) .disposed(by: cell!.disposeBag)
if USERP.canSupplierRemarkBtn == true {
cell?.reportButton.isHidden = false
cell?.reportButton.snp.updateConstraints({ make in
make.width.equalTo(auto(80))
make.right.equalTo(cell!.additionalButton.snp.left).offset(-auto(10))
})
}else{
cell?.reportButton.isHidden = true
cell?.reportButton.snp.updateConstraints({ make in
make.width.equalTo(0)
make.right.equalTo(cell!.additionalButton.snp.left).offset(0)
})
}
if USERP.canSupplierAuditEditCostBtn == true {
cell?.additionalButton.isHidden = false
cell?.additionalButton.snp.updateConstraints({ make in
make.width.equalTo(auto(80))
make.right.equalTo(-auto(10))
})
}else{
cell?.additionalButton.isHidden = true
cell?.additionalButton.snp.updateConstraints({ make in
make.width.equalTo(0)
make.right.equalTo(0)
})
}
if USERP.canSupplierRemarkBtn == false && USERP.canSupplierAuditEditCostBtn == false {
cell?.additionalButton.snp.updateConstraints({ make in
make.height.equalTo(0)
})
}else{
cell?.additionalButton.snp.updateConstraints({ make in
make.height.equalTo(auto(30))
})
}
return cell! return cell!
} }
@@ -554,7 +599,8 @@ class HistoryItemCell : DDTableViewCell {
reportButton.snp.makeConstraints { make in reportButton.snp.makeConstraints { make in
make.right.equalTo(additionalButton.snp.left).offset(-auto(10)) make.right.equalTo(additionalButton.snp.left).offset(-auto(10))
make.top.equalTo(additionalButton) make.top.equalTo(additionalButton)
make.width.height.equalTo(additionalButton) make.width.equalTo(auto(80))
make.height.equalTo(auto(30))
} }
} }

View File

@@ -55,4 +55,6 @@ open class ApiList {
public let checkLogin = "/supplierAppV2/open/checkLogin" public let checkLogin = "/supplierAppV2/open/checkLogin"
public let uploadCallRecord = "/supplierAppV2/dispatchApp/order/uploadCallRecord" public let uploadCallRecord = "/supplierAppV2/dispatchApp/order/uploadCallRecord"
public let userOperationPermissions = "/supplierAppV2/dispatchApp/user/userOperationPermissions"
} }

View File

@@ -107,4 +107,8 @@ open class RequestList {
func uploadCallRecord(parameters:Encodable) -> Single<ResponseModel<String>?> { func uploadCallRecord(parameters:Encodable) -> Single<ResponseModel<String>?> {
return DDAF.post(urlString: HOST+API.uploadCallRecord,parameters: parameters,encoding: JSONParameterEncoder.default,headers: [tokenHeader()],responseType: ResponseModel<String>.self) return DDAF.post(urlString: HOST+API.uploadCallRecord,parameters: parameters,encoding: JSONParameterEncoder.default,headers: [tokenHeader()],responseType: ResponseModel<String>.self)
} }
func userOperationPermissions() -> Single<ResponseModel<[String]>?> {
return DDAF.post(urlString: HOST+API.userOperationPermissions,encoding: URLEncodedFormParameterEncoder.default,headers: [tokenHeader()],responseType: ResponseModel<[String]>.self)
}
} }

View File

@@ -305,4 +305,17 @@ public class MessageReminderListDataModel : Decodable {
} }
} }
public class UserOperationPermissionsDataModel : Decodable {
enum DataEnum : String,Decodable {
case rejectDispatchHandle = "rejectDispatchHandle"
case acceptDispatchHandle = "acceptDispatchHandle"
case waitdispatchBtn = "waitdispatchBtn"
case waitModifyDispatchBtn = "waitModifyDispatchBtn"
case dealWith = "dealWith"
case supplierRemarkBtn = "supplierRemarkBtn"
case supplierAuditEditCostBtn = "supplierAuditEditCostBtn"
case supplierAuditUploadPhotoBtn = "supplierAuditUploadPhotoBtn"
}
}

View File

@@ -105,12 +105,23 @@ extension AppDelegate : JPUSHRegisterDelegate {
MCOUNT.newestMessage() MCOUNT.newestMessage()
if GROUP.isOrderPushNotification(userInfo: userInfo) == true { if GROUP.isOrderPushNotification(userInfo: userInfo) == true {
// //
TOOL.dealWithOrderPushNotification { userInfo in TOOL.dealWithOrderPushNotification { userInfo in
TOOL.playAlertWith(userInfo: userInfo) TOOL.playAlertWith(userInfo: userInfo)
TOOL.playVoiceWith(userInfo: userInfo) TOOL.playVoiceWith(userInfo: userInfo)
} }
}else{ }else{
//
if GROUP.isShowPopPushNotification(userInfo: userInfo) == true {
TOOL.dealWithOrderPushNotification { userInfo in
TOOL.playAlertWith(userInfo: userInfo)
}
}
//
if GROUP.isBroadcastPushNotification(userInfo: userInfo) == true {
TOOL.playVoiceWith(userInfo: userInfo)
}
completionHandler(1 << 1 | 1 << 2) completionHandler(1 << 1 | 1 << 2)
} }
} }

View File

@@ -39,9 +39,6 @@ class Initial : NSObject {
// af // af
initAF() initAF()
// call
initCall()
// cocoadebug // cocoadebug
initCocoaDebug() initCocoaDebug()
} }
@@ -88,6 +85,34 @@ class Initial : NSObject {
.disposed(by: disposeBag) .disposed(by: disposeBag)
} }
func initRefreshToken() {
// token,
Observable.just(1)
.observe(on: MainScheduler.instance)
.do(onNext: { _ in
UIApplication.shared.dd_keyWindow.dd_showHUD()
})
.flatMapLatest { _ in
return RQ.token(parameters: TokenParameters(refresh_token: USER.refreshToken!))
}
.observe(on: MainScheduler.instance)
.do(onNext: { _ in
UIApplication.shared.dd_keyWindow.dd_hideHUD()
})
.subscribe(onNext: { response in
if response?.success == true {
USER.setToken(token: response?.data?.accessToken.tokenValue)
USER.setRefreshToken(token: response?.data?.refreshToken.tokenValue)
}
USER.refreshTokenSub.onNext(true)
})
.disposed(by: disposeBag)
}
func initPermission() {
USERP.relay.accept(nil)
}
func initAppUpdate() { func initAppUpdate() {
APPUPDATE.requestAppUpdateRelay.accept(.auto) APPUPDATE.requestAppUpdateRelay.accept(.auto)
} }
@@ -111,7 +136,10 @@ class Initial : NSObject {
} }
NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: Notification_loginSuccessToRescueController), object: nil, queue: .main) {[weak self] note in NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: Notification_loginSuccessToRescueController), object: nil, queue: .main) {[weak self] note in
self?.initRefreshToken()
self?.initPermission()
self?.initAppUpdate() self?.initAppUpdate()
self?.initCall()
window?.rootViewController = MainTabBarController.init() window?.rootViewController = MainTabBarController.init()
} }

View File

@@ -11,6 +11,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
public var window: UIWindow? public var window: UIWindow?
public var initial : Initial = Initial.shareInstance public var initial : Initial = Initial.shareInstance
public var appIsAlive : Bool = false
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
@@ -34,12 +35,14 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
} }
func sceneDidBecomeActive(_ scene: UIScene) { func sceneDidBecomeActive(_ scene: UIScene) {
if USER.isLogin == true { if USER.isLogin == true,appIsAlive == true {
// // appGROUPappapp died
TOOL.dealWithOrderPushNotification { userInfo in TOOL.dealWithOrderPushNotification { userInfo in
TOOL.playAlertWith(userInfo: userInfo) TOOL.playAlertWith(userInfo: userInfo)
} }
} }
// app
appIsAlive = true
} }
func sceneWillResignActive(_ scene: UIScene) { func sceneWillResignActive(_ scene: UIScene) {

View File

@@ -16,9 +16,6 @@ open class AcceptOrderTool : NSObject {
private let disposeBag = DisposeBag() private let disposeBag = DisposeBag()
func open(userInfo:[AnyHashable:Any]?) { func open(userInfo:[AnyHashable:Any]?) {
if GROUP.newMessageAlert != true {
return
}
let acceptOrderView = AcceptOrderView() let acceptOrderView = AcceptOrderView()
acceptOrderView.titleLabel.text = "新订单" acceptOrderView.titleLabel.text = "新订单"
acceptOrderView.contentLabel.text = TOOL.getOrderString(userInfo: userInfo) acceptOrderView.contentLabel.text = TOOL.getOrderString(userInfo: userInfo)

View File

@@ -0,0 +1,52 @@
//
// PushNotiCommonTool.swift
// OrderScheduling
//
// Created by on 2023/9/5.
//
import Foundation
import RxSwift
import RxCocoa
public let PUSHNOTICOMMONTOOL = PushNotiCommonTool.default
open class PushNotiCommonTool : NSObject {
public static let `default` = PushNotiCommonTool()
private let disposeBag = DisposeBag()
func open(userInfo:[AnyHashable:Any]?) {
let commonView = PushNotiCommonView()
if let dict = GROUP.parserAlertToDictionary(userInfo: userInfo) {
if let title = dict[pushNoti_title_key] {
commonView.titleLabel.text = title
}
if let body = dict[pushNoti_body_key] {
commonView.contentLabel.text = body
}
}
if let cancel = (userInfo?[pushNoti_cancelButtonText_key] as? String) {
commonView.cancelButton.setTitle(cancel, for: .normal)
}
if let sure = (userInfo?[pushNoti_confirmButtonText_key] as? String) {
commonView.sureButton.setTitle(sure, for: .normal)
}
commonView.cancelButton.rx.tap
.subscribe(onNext: {
ENTRY.dismiss(name: pushNotiCommonViewEntry) {
//
TOOL.stopVoice()
}
}).disposed(by: disposeBag)
commonView.sureButton.rx.tap
.subscribe(onNext: {
ENTRY.dismiss(name: pushNotiCommonViewEntry) {
//
TOOL.stopVoice()
}
}).disposed(by: disposeBag)
ENTRY.showPushNotiCommonEntry(view: commonView,name: pushNotiCommonViewEntry)
}
}

View File

@@ -0,0 +1,119 @@
//
// PushNotiCommonView.swift
// OrderScheduling
//
// Created by on 2023/9/5.
//
import Foundation
import DDControlsKit_Private
import DDAutoUIKit_Private
open class PushNotiCommonView : DDView{
private let radiusView : DDView
private let scrollView : DDScrollView
private let scrollContentView : DDView
public let titleLabel : DDLabel
public let contentLabel : DDLabel
public let horizontalLine : DDView
public let verticalLine : DDView
public let cancelButton : DDButton
public let sureButton : DDButton
public override init(frame: CGRect) {
radiusView = DDView.init()
scrollView = DDScrollView()
scrollContentView = DDView.init()
titleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(16)), textColor: .black)
contentLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(14)), textColor: .black.alpha(0.5))
horizontalLine = DDView()
verticalLine = DDView()
cancelButton = DDButton.dd_initCustom()
sureButton = DDButton.dd_initCustom()
super.init(frame: frame)
radiusView.layer.cornerRadius = auto(10)
radiusView.layer.masksToBounds = true
addSubview(radiusView)
radiusView.addSubview(titleLabel)
radiusView.addSubview(scrollView)
scrollView.addSubview(scrollContentView)
contentLabel.numberOfLines = 0
contentLabel.textAlignment = .center
contentLabel.text = ""
scrollContentView.addSubview(contentLabel)
horizontalLine.backgroundColor = .hex("979797").alpha(0.35)
radiusView.addSubview(horizontalLine)
verticalLine.backgroundColor = .hex("979797").alpha(0.35)
verticalLine.isHidden = true
radiusView.addSubview(verticalLine)
cancelButton.setTitle("取消", for: .normal)
cancelButton.titleLabel?.font = .mediumFont(auto(14))
cancelButton.backgroundColor = .white
cancelButton.setTitleColor(.black.alpha(0.3), for: .normal)
radiusView.addSubview(cancelButton)
sureButton.setTitle("确定", for: .normal)
sureButton.setTitleColor(.white, for: .normal)
sureButton.titleLabel?.font = .mediumFont(auto(14))
sureButton.backgroundColor = .hex("1C62D9")
radiusView.addSubview(sureButton)
radiusView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
titleLabel.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalToSuperview().offset(auto(15))
}
scrollView.snp.makeConstraints { make in
make.top.equalTo(titleLabel.snp.bottom).offset(0)
make.left.right.equalToSuperview()
make.bottom.equalTo(horizontalLine.snp.top)
}
scrollContentView.snp.makeConstraints { make in
make.edges.equalToSuperview()
make.width.equalToSuperview()
make.height.greaterThanOrEqualToSuperview()
}
contentLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(auto(20))
make.top.equalToSuperview().offset(auto(15))
make.right.equalTo(-auto(20))
make.bottom.equalTo(scrollContentView).offset(-auto(20))
}
horizontalLine.snp.makeConstraints { make in
make.bottom.equalToSuperview().offset(-auto(40))
make.left.right.equalToSuperview()
make.height.equalTo(1)
}
verticalLine.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalTo(horizontalLine.snp.bottom)
make.bottom.equalToSuperview()
make.width.equalTo(1)
}
cancelButton.snp.makeConstraints { make in
make.left.equalToSuperview()
make.right.equalTo(verticalLine.snp.left)
make.top.equalTo(horizontalLine.snp.bottom)
make.bottom.equalToSuperview()
}
sureButton.snp.makeConstraints { make in
make.bottom.equalToSuperview()
make.right.equalToSuperview()
make.top.equalTo(horizontalLine.snp.top)
make.left.equalTo(verticalLine.snp.right)
}
}
public required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

View File

@@ -67,28 +67,6 @@ extension RescueController {
}) })
.disposed(by: disposeBag) .disposed(by: disposeBag)
// token,
Observable.just(1)
.observe(on: MainScheduler.instance)
.do(onNext: { _ in
UIApplication.shared.dd_keyWindow.dd_showHUD()
})
.flatMapLatest { _ in
return RQ.token(parameters: TokenParameters(refresh_token: USER.refreshToken!))
}
.observe(on: MainScheduler.instance)
.do(onNext: { _ in
UIApplication.shared.dd_keyWindow.dd_hideHUD()
})
.subscribe(onNext: { response in
if response?.success == true {
USER.setToken(token: response?.data?.accessToken.tokenValue)
USER.setRefreshToken(token: response?.data?.refreshToken.tokenValue)
}
USER.refreshTokenSub.onNext(true)
})
.disposed(by: disposeBag)
// tabBar // tabBar
preRefreshRelay preRefreshRelay
.observe(on: MainScheduler.instance) .observe(on: MainScheduler.instance)
@@ -220,6 +198,13 @@ extension RescuePendingOrderController {
self?.pendingOrderView.tableView.mj_header?.beginRefreshing() self?.pendingOrderView.tableView.mj_header?.beginRefreshing()
}) })
.disposed(by: disposeBag) .disposed(by: disposeBag)
USERP.userPermissionRelay
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] _ in
self?.pendingOrderView.tableView.reloadData()
})
.disposed(by: disposeBag)
} }
func entry(model:OrderListDataModel,remarkId:String?) { func entry(model:OrderListDataModel,remarkId:String?) {
@@ -351,6 +336,13 @@ extension RescuePendingDispatchController {
self?.pendingDispatchView.tableView.mj_header?.beginRefreshing() self?.pendingDispatchView.tableView.mj_header?.beginRefreshing()
}) })
.disposed(by: disposeBag) .disposed(by: disposeBag)
USERP.userPermissionRelay
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] _ in
self?.pendingDispatchView.tableView.reloadData()
})
.disposed(by: disposeBag)
} }
} }
@@ -413,6 +405,13 @@ extension RescueIsIngController {
self?.pendingIsIngView.tableView.mj_header?.beginRefreshing() self?.pendingIsIngView.tableView.mj_header?.beginRefreshing()
}) })
.disposed(by: disposeBag) .disposed(by: disposeBag)
USERP.userPermissionRelay
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] _ in
self?.pendingIsIngView.tableView.reloadData()
})
.disposed(by: disposeBag)
} }
} }
@@ -531,6 +530,44 @@ extension RescuePendingOrderController : UITableViewDelegate,UITableViewDataSour
self?.acceptOrderRelay.accept(model) self?.acceptOrderRelay.accept(model)
}) })
.disposed(by: cell!.disposeBag) .disposed(by: cell!.disposeBag)
if USERP.canRejectDispatchHandle == true {
cell?.refuseButton.isHidden = false
cell?.refuseButton.snp.updateConstraints({ make in
make.right.equalTo(cell!.acceptButton.snp.left).offset(-auto(10))
make.width.equalTo(auto(80))
})
}else{
cell?.refuseButton.isHidden = true
cell?.refuseButton.snp.updateConstraints({ make in
make.right.equalTo(cell!.acceptButton.snp.left).offset(0)
make.width.equalTo(0)
})
}
if USERP.canAcceptDispatchHandle == true {
cell?.acceptButton.isHidden = false
cell?.acceptButton.snp.updateConstraints({ make in
make.width.equalTo(auto(80))
make.right.equalTo(-auto(10))
})
}else{
cell?.acceptButton.isHidden = true
cell?.acceptButton.snp.updateConstraints({ make in
make.width.equalTo(0)
make.right.equalTo(0)
})
}
if USERP.canRejectDispatchHandle == false && USERP.canAcceptDispatchHandle == false {
cell?.acceptButton.snp.updateConstraints({ make in
make.height.equalTo(0)
})
}else{
cell?.acceptButton.snp.updateConstraints({ make in
make.height.equalTo(auto(30))
})
}
return cell! return cell!
} }
@@ -712,6 +749,20 @@ extension RescuePendingDispatchController : UITableViewDelegate,UITableViewDataS
self?.navigationController?.pushViewController(vc, animated: true) self?.navigationController?.pushViewController(vc, animated: true)
}) })
.disposed(by: cell!.disposeBag) .disposed(by: cell!.disposeBag)
if USERP.canWaitdispatchBtn == true {
cell?.dispatchButton.isHidden = false
cell?.dispatchButton.snp.updateConstraints({ make in
make.right.equalTo(auto(10))
make.width.equalTo(auto(80))
})
}else{
cell?.dispatchButton.isHidden = true
cell?.dispatchButton.snp.updateConstraints({ make in
make.right.equalTo(0)
make.width.equalTo(0)
})
}
return cell! return cell!
} }
@@ -800,6 +851,44 @@ extension RescueIsIngController : UITableViewDelegate,UITableViewDataSource {
WEBTOOL.open(name: .reporting,appending: "&queryType=\(OrderTypeEnum.TO_RESCUE.rawValue)&userOrderId=\(model.userOrderId)&orderCode=\(model.orderCode)") WEBTOOL.open(name: .reporting,appending: "&queryType=\(OrderTypeEnum.TO_RESCUE.rawValue)&userOrderId=\(model.userOrderId)&orderCode=\(model.orderCode)")
}) })
.disposed(by: cell!.disposeBag) .disposed(by: cell!.disposeBag)
if USERP.canWaitModifyDispatchBtn == true {
cell?.dispatchButton.isHidden = false
cell?.dispatchButton.snp.updateConstraints({ make in
make.right.equalTo(cell!.reportButton.snp.left).offset(-auto(10))
make.width.equalTo(auto(80))
})
}else{
cell?.dispatchButton.isHidden = true
cell?.dispatchButton.snp.updateConstraints({ make in
make.right.equalTo(cell!.reportButton.snp.left).offset(0)
make.width.equalTo(0)
})
}
if USERP.canSupplierRemarkBtn == true {
cell?.reportButton.isHidden = false
cell?.reportButton.snp.updateConstraints({ make in
make.width.equalTo(auto(80))
make.right.equalTo(-auto(10))
})
}else{
cell?.reportButton.isHidden = true
cell?.reportButton.snp.updateConstraints({ make in
make.width.equalTo(0)
make.right.equalTo(0)
})
}
if USERP.canWaitModifyDispatchBtn == false && USERP.canSupplierRemarkBtn == false {
cell?.reportButton.snp.updateConstraints({ make in
make.height.equalTo(0)
})
}else{
cell?.reportButton.snp.updateConstraints({ make in
make.height.equalTo(auto(30))
})
}
return cell! return cell!
} }
@@ -1240,7 +1329,8 @@ class RescuePendingOrderCell : DDTableViewCell {
refuseButton.snp.makeConstraints { make in refuseButton.snp.makeConstraints { make in
make.right.equalTo(acceptButton.snp.left).offset(-auto(10)) make.right.equalTo(acceptButton.snp.left).offset(-auto(10))
make.top.equalTo(acceptButton) make.top.equalTo(acceptButton)
make.width.height.equalTo(acceptButton) make.width.equalTo(auto(80))
make.height.equalTo(auto(30))
} }
} }
@@ -1528,7 +1618,8 @@ class RescuePendingDispatchCell : DDTableViewCell {
contactButton.snp.makeConstraints { make in contactButton.snp.makeConstraints { make in
make.right.equalTo(dispatchButton.snp.left).offset(-auto(10)) make.right.equalTo(dispatchButton.snp.left).offset(-auto(10))
make.top.equalTo(dispatchButton) make.top.equalTo(dispatchButton)
make.width.height.equalTo(dispatchButton) make.width.equalTo(auto(80))
make.height.equalTo(auto(30))
} }
} }
@@ -1725,7 +1816,8 @@ class RescueIsIngCell : DDTableViewCell {
dispatchButton.snp.makeConstraints { make in dispatchButton.snp.makeConstraints { make in
make.right.equalTo(reportButton.snp.left).offset(-auto(10)) make.right.equalTo(reportButton.snp.left).offset(-auto(10))
make.top.equalTo(reportButton) make.top.equalTo(reportButton)
make.width.height.equalTo(reportButton) make.width.equalTo(auto(80))
make.height.equalTo(auto(30))
} }
} }

View File

@@ -122,6 +122,13 @@ extension ReviewFailedController {
self?.reviewFailedView.tableView.mj_header?.beginRefreshing() self?.reviewFailedView.tableView.mj_header?.beginRefreshing()
}) })
.disposed(by: disposeBag) .disposed(by: disposeBag)
USERP.userPermissionRelay
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] _ in
self?.reviewFailedView.tableView.reloadData()
})
.disposed(by: disposeBag)
} }
} }
@@ -161,6 +168,12 @@ extension ReviewFailedController : UITableViewDelegate,UITableViewDataSource {
self?.navigationController?.pushViewController(vc, animated: true) self?.navigationController?.pushViewController(vc, animated: true)
}) })
.disposed(by: cell!.disposeBag) .disposed(by: cell!.disposeBag)
if USERP.canSupplierAuditUploadPhotoBtn == true {
cell?.additionalButton.isHidden = false
}else{
cell?.additionalButton.isHidden = true
}
return cell! return cell!
} }
} }

View File

@@ -22,6 +22,16 @@ public let pushNoti_taskCode_key = "taskCode"
public let pushNoti_newOrder_key = "新订单" public let pushNoti_newOrder_key = "新订单"
public let pushNoti_broadcastKeywords_key = "broadcastKeywords"
public let pushNoti_isShowPop_key = "isShowPop"
public let pushNoti_titleContent_key = "titleContent"
public let pushNoti_confirmButtonText_key = "confirmButtonText"
public let pushNoti_cancelButtonText_key = "cancelButtonText"
// //
public let juheNewOrderAudio_key = "juheNewOrderAudio.wav" public let juheNewOrderAudio_key = "juheNewOrderAudio.wav"

View File

@@ -18,3 +18,5 @@ public let appUpdateEntry = "appUpdateEntry"
public let notificationAuthViewEntry = "notificationAuthViewEntry" public let notificationAuthViewEntry = "notificationAuthViewEntry"
public let acceptOrderViewEntry = "acceptOrderViewEntry" public let acceptOrderViewEntry = "acceptOrderViewEntry"
public let pushNotiCommonViewEntry = "pushNotiCommonViewEntry"

Binary file not shown.

View File

@@ -19,6 +19,11 @@ class NotificationService: UNNotificationServiceExtension {
if let bestAttemptContent = bestAttemptContent { if let bestAttemptContent = bestAttemptContent {
// Modify the notification content here... // Modify the notification content here...
JPushNotificationExtensionService.jpushSetAppkey(JPushKey)
JPushNotificationExtensionService.jpushReceive(request) {
contentHandler(request.content)
}
let userInfo = bestAttemptContent.userInfo let userInfo = bestAttemptContent.userInfo
if let dict = GROUP.parserAlertToDictionary(userInfo: userInfo) { if let dict = GROUP.parserAlertToDictionary(userInfo: userInfo) {
@@ -46,16 +51,23 @@ class NotificationService: UNNotificationServiceExtension {
bestAttemptContent.sound = sound bestAttemptContent.sound = sound
GROUP.setBestAttemptContentUserInfo(bestAttemptContentUserInfo: userInfo) GROUP.setBestAttemptContentUserInfo(bestAttemptContentUserInfo: userInfo)
contentHandler(bestAttemptContent)
}else{ }else{
bestAttemptContent.sound = .default if let isShowPop = (userInfo[pushNoti_broadcastKeywords_key] as? Bool), isShowPop == true {
} if let userInfo = GROUP.bestAttemptContentUserInfo,GROUP.isOrderPushNotification(userInfo: userInfo) == true {
}else{
GROUP.setBestAttemptContentUserInfo(bestAttemptContentUserInfo: userInfo)
}
}
JPushNotificationExtensionService.jpushSetAppkey(JPushKey) if let broadcastKeywords = (userInfo[pushNoti_broadcastKeywords_key] as? String),broadcastKeywords.isEmpty == false {
JPushNotificationExtensionService.jpushReceive(request) { bestAttemptContent.sound = .default
contentHandler(request.content) contentHandler(bestAttemptContent)
}else{
bestAttemptContent.sound = .default
contentHandler(bestAttemptContent)
}
} }
contentHandler(bestAttemptContent)
} }
} }
@@ -63,6 +75,20 @@ class NotificationService: UNNotificationServiceExtension {
// Called just before the extension will be terminated by the system. // Called just before the extension will be terminated by the system.
// Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used. // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent { if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {
let userInfo = bestAttemptContent.userInfo
if let dict = GROUP.parserAlertToDictionary(userInfo: userInfo) {
if let title = dict[pushNoti_title_key] {
bestAttemptContent.title = title
}
if let body = dict[pushNoti_body_key] {
bestAttemptContent.body = body
}
}else if let body = GROUP.parserAlertToString(userInfo: userInfo) {
bestAttemptContent.body = body
}
bestAttemptContent.sound = .default
contentHandler(bestAttemptContent) contentHandler(bestAttemptContent)
} }
} }

View File

@@ -23,7 +23,7 @@ PODS:
- BRPickerView/StringPickerView (2.8.1): - BRPickerView/StringPickerView (2.8.1):
- BRPickerView/Base - BRPickerView/Base
- CocoaDebug (1.7.7) - CocoaDebug (1.7.7)
- DDAudioPlayerKit_Private (0.1.0) - DDAudioPlayerKit_Private (0.1.3)
- DDAutoUIKit_Private (0.1.3) - DDAutoUIKit_Private (0.1.3)
- DDBasicControlsKit_Private/DDBaseAnimation/DDTransitionAnimation (0.3.2) - DDBasicControlsKit_Private/DDBaseAnimation/DDTransitionAnimation (0.3.2)
- DDBasicControlsKit_Private/DDBaseAttributedString (0.3.2): - DDBasicControlsKit_Private/DDBaseAttributedString (0.3.2):
@@ -374,7 +374,7 @@ SPEC CHECKSUMS:
AMapTrack-NO-IDFA: 7109cf1867f5d6c407c8191492b1f73101e1682e AMapTrack-NO-IDFA: 7109cf1867f5d6c407c8191492b1f73101e1682e
BRPickerView: 2531a2d4d0fea0b57a1c738de215af0f88863a2f BRPickerView: 2531a2d4d0fea0b57a1c738de215af0f88863a2f
CocoaDebug: b38d31464b91a9775928f8667d114db07b136565 CocoaDebug: b38d31464b91a9775928f8667d114db07b136565
DDAudioPlayerKit_Private: b18c9b8b4ee2d421227895edac27b2a799fcdb0d DDAudioPlayerKit_Private: b727c241c5cd06f09d64bb2b3d5682b6e9eb8165
DDAutoUIKit_Private: 188066b4d13c8096676ddd9efa15974238f6dca3 DDAutoUIKit_Private: 188066b4d13c8096676ddd9efa15974238f6dca3
DDBasicControlsKit_Private: d3aebc505eaac273a8f6b85238662ad6e64a1a08 DDBasicControlsKit_Private: d3aebc505eaac273a8f6b85238662ad6e64a1a08
DDCategoryKit_Private: 19d515c43d5e9c4ee80b8ccf3fb8ab40368b8668 DDCategoryKit_Private: 19d515c43d5e9c4ee80b8ccf3fb8ab40368b8668
@@ -404,6 +404,6 @@ SPEC CHECKSUMS:
SwiftEntryKit: 61b5fa36f34a97dd8013e48a7345bc4c4720be9a SwiftEntryKit: 61b5fa36f34a97dd8013e48a7345bc4c4720be9a
ZLPhotoBrowser: 0563c2bfc7b247b65d023d646012f46cba94101b ZLPhotoBrowser: 0563c2bfc7b247b65d023d646012f46cba94101b
PODFILE CHECKSUM: 4a6b876956d7d3482deecd88ffe2bf250614e00b PODFILE CHECKSUM: 8b73e7b8269156e4fa26d46c40f768817fa76230
COCOAPODS: 1.11.3 COCOAPODS: 1.11.3

View File

@@ -7,75 +7,124 @@
import Foundation import Foundation
import AVFoundation import AVFoundation
//import DDLogKit_Private
public let DDAS = DDAudioService.default public let DDAS = DDAudioService.default
open class DDAudioService { open class DDAudioService {
public static let `default` = DDAudioService() public static let `default` = DDAudioService()
private var items : [DDAudioServiceItem] = []
private var audioSoundID : SystemSoundID = 0 public func playSoundWithVibrate(audioUrl:URL,name:String,numberOfLoops:Int = 1,timeInterval:TimeInterval = 0,eachLoopCompletionBlock: (() -> Void)? = nil,endCompletionBlock: (() -> Void)? = nil) {
private var vibrateSoundID : SystemSoundID = 0 let item = DDAudioServiceItem(name: name)
private var audioNumberOfLoops : Int = 0 items.append(item)
private var vibrateNumberOfLoops : Int = 0 item.playSoundWithVibrate(audioUrl: audioUrl,numberOfLoops: numberOfLoops,timeInterval: timeInterval,eachLoopCompletionBlock: eachLoopCompletionBlock,endCompletionBlock: endCompletionBlock)
private var endSound : Bool = false }
private var endVibrate : Bool = false
public func playSoundWithVibrate(audioUrl:URL,numberOfLoops:Int = 1) { public func playSound(audioUrl:URL,name:String,numberOfLoops:Int = 1,timeInterval:TimeInterval = 0,eachLoopCompletionBlock: (() -> Void)? = nil,endCompletionBlock: (() -> Void)? = nil) {
playVibrate(numberOfLoops: -1) let item = DDAudioServiceItem(name: name)
playSound(audioUrl: audioUrl,numberOfLoops: numberOfLoops) {[weak self] in items.append(item)
self?.stopSound() item.playSound(audioUrl: audioUrl,numberOfLoops: numberOfLoops,timeInterval: timeInterval,eachLoopCompletionBlock: eachLoopCompletionBlock,endCompletionBlock: endCompletionBlock)
self?.stopVibrate() }
public func playVibrate(name:String,numberOfLoops:Int = 1,timeInterval:TimeInterval = 0,eachLoopCompletionBlock: (() -> Void)? = nil,endCompletionBlock: (() -> Void)? = nil) {
let item = DDAudioServiceItem(name: name)
items.append(item)
item.playVibrate(numberOfLoops: numberOfLoops,timeInterval: timeInterval,eachLoopCompletionBlock: eachLoopCompletionBlock,endCompletionBlock: endCompletionBlock)
}
public func stopSoundWithVibrate(name:String) {
if items.contains(where: { item in
item.name == name
}) == true {
if let index = items.firstIndex(where: { item in
item.name == name
}) {
let item = items[index]
item.stopSoundWithVibrate {[weak self] in
self?.items.remove(at: index)
}
}
} }
} }
public func stopSoundWithVibrate() { public func stopSound(name:String) {
stopSound() if items.contains(where: { item in
stopVibrate() item.name == name
}) == true {
if let index = items.firstIndex(where: { item in
item.name == name
}) {
let item = items[index]
item.stopSound {[weak self] in
self?.items.remove(at: index)
}
}
}
} }
public func playSound(audioUrl:URL,numberOfLoops:Int = 1, endCompletionBlock: (() -> Void)? = nil) { public func stopVibrate(name:String) {
self.audioNumberOfLoops = numberOfLoops if items.contains(where: { item in
item.name == name
}) == true {
if let index = items.firstIndex(where: { item in
item.name == name
}) {
let item = items[index]
item.stopVibrate {[weak self] in
self?.items.remove(at: index)
}
}
}
}
}
open class DDAudioServiceItem {
fileprivate var name : String
private var audioSoundID : SystemSoundID = 0
private var vibrateSoundID : SystemSoundID = 0
private var endSound : Bool = false
private var endVibrate : Bool = false
private var stopSoundCompletionHander : (() -> Void)?
private var stopVibrateCompletionHander : (() -> Void)?
init(name:String) {
self.name = name
}
public func playSoundWithVibrate(audioUrl:URL,numberOfLoops:Int = 1,timeInterval:TimeInterval = 0, eachLoopCompletionBlock: (() -> Void)? = nil,endCompletionBlock: (() -> Void)? = nil) {
playVibrate(numberOfLoops: -1)
playSound(audioUrl: audioUrl,numberOfLoops: numberOfLoops,timeInterval: timeInterval,eachLoopCompletionBlock: eachLoopCompletionBlock) {[weak self] in
self?.stopVibrate {
if endCompletionBlock != nil {
endCompletionBlock!()
}
}
}
}
public func stopSoundWithVibrate(completionHander:@escaping (() -> Void)) {
stopSound {[weak self] in
self?.stopVibrate {
completionHander()
}
}
}
public func playSound(audioUrl:URL,numberOfLoops:Int = 1,timeInterval:TimeInterval = 0,eachLoopCompletionBlock: (() -> Void)? = nil,endCompletionBlock: (() -> Void)? = nil) {
var audioSoundID:SystemSoundID = 0 var audioSoundID:SystemSoundID = 0
AudioServicesCreateSystemSoundID(audioUrl as CFURL, &audioSoundID) AudioServicesCreateSystemSoundID(audioUrl as CFURL, &audioSoundID)
self.audioSoundID = audioSoundID self.audioSoundID = audioSoundID
DispatchQueue.global().async {[weak self] in DispatchQueue.global().async {[weak self] in
self?.playSound(audioSoundID: audioSoundID,leftNumberOfLoops: numberOfLoops,endCompletionBlock: { self?.playSound(audioSoundID: audioSoundID,leftNumberOfLoops: numberOfLoops,timeInterval: timeInterval,eachLoopCompletionBlock: eachLoopCompletionBlock,endCompletionBlock: endCompletionBlock)
if endCompletionBlock != nil {
endCompletionBlock!()
}
})
} }
} }
public func playVibrate(numberOfLoops:Int = 1, endCompletionBlock: (() -> Void)? = nil) { private func playSound(audioSoundID:SystemSoundID,leftNumberOfLoops:Int,timeInterval:TimeInterval,eachLoopCompletionBlock: (() -> Void)?, endCompletionBlock: (() -> Void)?) {
self.audioNumberOfLoops = numberOfLoops
var vibrateSoundID : SystemSoundID = 0
vibrateSoundID = kSystemSoundID_Vibrate
self.vibrateSoundID = vibrateSoundID
DispatchQueue.global().async {[weak self] in
self?.playVibrate(vibrateSoundID: vibrateSoundID, leftNumberOfLoops: numberOfLoops,endCompletionBlock: {
if endCompletionBlock != nil {
endCompletionBlock!()
}
})
}
}
public func stopSound() {
endSound = true
AudioServicesDisposeSystemSoundID(audioSoundID)
}
public func stopVibrate() {
endVibrate = true
AudioServicesDisposeSystemSoundID(vibrateSoundID)
}
private func playSound(audioSoundID:SystemSoundID,leftNumberOfLoops:Int,timeInterval:TimeInterval = 0,eachLoopCompletionBlock: (() -> Void)? = nil, endCompletionBlock: (() -> Void)? = nil) {
var changeLeftNumberOfLoops = leftNumberOfLoops var changeLeftNumberOfLoops = leftNumberOfLoops
AudioServicesPlaySystemSoundWithCompletion(audioSoundID) {[weak self] in AudioServicesPlaySystemSoundWithCompletion(audioSoundID) {[weak self] in
// loop
if eachLoopCompletionBlock != nil { if eachLoopCompletionBlock != nil {
eachLoopCompletionBlock!() eachLoopCompletionBlock!()
} }
@@ -83,22 +132,61 @@ open class DDAudioService {
// 0 // 0
changeLeftNumberOfLoops-=1 changeLeftNumberOfLoops-=1
if changeLeftNumberOfLoops == 0 || self?.endSound == true { if changeLeftNumberOfLoops == 0 || self?.endSound == true {
self?.stopSound() //
if endCompletionBlock != nil { AudioServicesDisposeSystemSoundID(audioSoundID)
// DDLog(message: "name = \(self?.name ?? "")sound")
//
self?.audioSoundID = 0
self?.endSound = false
// stop
if self?.stopSoundCompletionHander != nil {
self?.stopSoundCompletionHander!()
}else if endCompletionBlock != nil {
// playloops
endCompletionBlock!() endCompletionBlock!()
} }
print("sound播放结束")
}else{ }else{
DispatchQueue.global().asyncAfter(deadline: .now() + timeInterval, execute: { DispatchQueue.global().asyncAfter(deadline: .now() + timeInterval, execute: {
self?.playSound(audioSoundID: audioSoundID, leftNumberOfLoops: changeLeftNumberOfLoops,timeInterval: timeInterval) self?.playSound(audioSoundID: audioSoundID, leftNumberOfLoops: changeLeftNumberOfLoops,timeInterval: timeInterval,eachLoopCompletionBlock: eachLoopCompletionBlock,endCompletionBlock: endCompletionBlock)
}) })
} }
} }
} }
private func playVibrate(vibrateSoundID:SystemSoundID,leftNumberOfLoops:Int,timeInterval:TimeInterval = 0,eachLoopCompletionBlock: (() -> Void)? = nil, endCompletionBlock: (() -> Void)? = nil) { public func stopSound(completionHandler:@escaping (() -> Void)) {
stopSoundCompletionHander = completionHandler
//
let status = AudioServicesDisposeSystemSoundID(audioSoundID)
// DDLog(message: "sound dispose status = \(status)")
if status != 0 {
//
endSound = true
}else {
audioSoundID = 0
// DDLog(message: "name = \(name)sound")
completionHandler()
}
}
public func playVibrate(numberOfLoops:Int = 1,timeInterval:TimeInterval = 0,eachLoopCompletionBlock: (() -> Void)? = nil,endCompletionBlock: (() -> Void)? = nil) {
self.endVibrate = false
var vibrateSoundID : SystemSoundID = 0
vibrateSoundID = kSystemSoundID_Vibrate
self.vibrateSoundID = vibrateSoundID
DispatchQueue.global().async {[weak self] in
self?.playVibrate(vibrateSoundID: vibrateSoundID, leftNumberOfLoops: numberOfLoops,timeInterval: timeInterval,eachLoopCompletionBlock: eachLoopCompletionBlock,endCompletionBlock: endCompletionBlock)
}
}
private func playVibrate(vibrateSoundID:SystemSoundID,leftNumberOfLoops:Int,timeInterval:TimeInterval = 0,eachLoopCompletionBlock: (() -> Void)?, endCompletionBlock: (() -> Void)?) {
var changeLeftNumberOfLoops = leftNumberOfLoops var changeLeftNumberOfLoops = leftNumberOfLoops
AudioServicesPlayAlertSoundWithCompletion(vibrateSoundID) {[weak self] in AudioServicesPlayAlertSoundWithCompletion(vibrateSoundID) {[weak self] in
// loop
if eachLoopCompletionBlock != nil { if eachLoopCompletionBlock != nil {
eachLoopCompletionBlock!() eachLoopCompletionBlock!()
} }
@@ -106,17 +194,43 @@ open class DDAudioService {
// 0 // 0
changeLeftNumberOfLoops-=1 changeLeftNumberOfLoops-=1
if changeLeftNumberOfLoops == 0 || self?.endVibrate == true { if changeLeftNumberOfLoops == 0 || self?.endVibrate == true {
self?.stopVibrate() //
if endCompletionBlock != nil { AudioServicesDisposeSystemSoundID(vibrateSoundID)
// DDLog(message: "name = \(self?.name ?? "")vibrate")
//
self?.vibrateSoundID = 0
self?.endVibrate = false
// stop
if self?.stopVibrateCompletionHander != nil {
self?.stopVibrateCompletionHander!()
}else if endCompletionBlock != nil {
// playloops
endCompletionBlock!() endCompletionBlock!()
} }
print("vibrate播放结束")
}else{ }else{
DispatchQueue.global().asyncAfter(deadline: .now() + timeInterval, execute: { DispatchQueue.global().asyncAfter(deadline: .now() + timeInterval, execute: {
self?.playVibrate(vibrateSoundID: vibrateSoundID, leftNumberOfLoops: changeLeftNumberOfLoops,timeInterval: timeInterval) self?.playVibrate(vibrateSoundID: vibrateSoundID, leftNumberOfLoops: changeLeftNumberOfLoops,timeInterval: timeInterval,eachLoopCompletionBlock: eachLoopCompletionBlock,endCompletionBlock: endCompletionBlock)
}) })
} }
} }
} }
public func stopVibrate(completionHandler:@escaping (() -> Void)) {
stopVibrateCompletionHander = completionHandler
//
let status = AudioServicesDisposeSystemSoundID(vibrateSoundID)
// DDLog(message: "vibrate dispose status = \(status)")
// if status != 0 {
// //
endVibrate = true
// }else{
// vibrateSoundID = 0
// DDLog(message: "name = \(name)vibrate")
// completionHandler()
// }
}
} }

View File

@@ -0,0 +1,93 @@
//
// DDSpeechSynthesizer.swift
// DDAudioPlayerKit_Private
//
// Created by on 2023/9/5.
//
import Foundation
import AVFoundation
public let DDSS = DDSpeechSynthesizer.default
open class DDSpeechSynthesizer {
public static let `default` = DDSpeechSynthesizer()
private var items : [DDSpeechSynthesizerItem] = []
public func play(text:String,name:String,numberOfLoops:Int = 1,timeInterval:TimeInterval = 0,eachLoopCompletionBlock: (() -> Void)? = nil, endCompletionBlock: (() -> Void)? = nil) {
let item = DDSpeechSynthesizerItem(name: name)
items.append(item)
item.play(text: text,numberOfLoops:numberOfLoops,timeInterval:timeInterval,eachLoopCompletionBlock:eachLoopCompletionBlock,endCompletionBlock:endCompletionBlock)
}
public func stop(name:String) {
if items.contains(where: { item in
item.name == name
}) == true {
if let index = items.firstIndex(where: { item in
item.name == name
}) {
let item = items[index]
item.stop()
items.remove(at: index)
}
}
}
}
class DDSpeechSynthesizerItem: NSObject, AVSpeechSynthesizerDelegate {
private var synthesizer : AVSpeechSynthesizer?
private var utterance : AVSpeechUtterance?
public var name : String
private var numberOfLoops : Int = 0
private var timeInterval : TimeInterval = 0
private var eachLoopCompletionBlock : (() -> Void)?
private var endCompletionBlock : (() -> Void)?
init(name:String) {
self.name = name
}
func play(text:String,numberOfLoops:Int,timeInterval:TimeInterval,eachLoopCompletionBlock: (() -> Void)?, endCompletionBlock: (() -> Void)?) {
self.numberOfLoops = numberOfLoops
self.timeInterval = timeInterval
self.eachLoopCompletionBlock = eachLoopCompletionBlock
self.endCompletionBlock = endCompletionBlock
synthesizer = AVSpeechSynthesizer()
synthesizer?.delegate = self
utterance = AVSpeechUtterance(string: text)
utterance?.voice = AVSpeechSynthesisVoice(language: "zh-Hans")
utterance?.rate = AVSpeechUtteranceDefaultSpeechRate
if let utterance {
synthesizer?.speak(utterance)
}
}
public func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didFinish utterance: AVSpeechUtterance) {
if eachLoopCompletionBlock != nil {
eachLoopCompletionBlock!()
}
numberOfLoops-=1
if numberOfLoops == 0 {
if endCompletionBlock != nil {
endCompletionBlock!()
}
}else{
DispatchQueue.global().asyncAfter(deadline: .now() + timeInterval, execute: {[weak self] in
if let utterance = self?.utterance {
self?.synthesizer?.speak(utterance)
}
})
}
}
func stop() {
synthesizer?.stopSpeaking(at: .immediate)
synthesizer?.delegate = nil
synthesizer = nil
utterance = nil
}
}

6
Pods/Manifest.lock generated
View File

@@ -23,7 +23,7 @@ PODS:
- BRPickerView/StringPickerView (2.8.1): - BRPickerView/StringPickerView (2.8.1):
- BRPickerView/Base - BRPickerView/Base
- CocoaDebug (1.7.7) - CocoaDebug (1.7.7)
- DDAudioPlayerKit_Private (0.1.0) - DDAudioPlayerKit_Private (0.1.3)
- DDAutoUIKit_Private (0.1.3) - DDAutoUIKit_Private (0.1.3)
- DDBasicControlsKit_Private/DDBaseAnimation/DDTransitionAnimation (0.3.2) - DDBasicControlsKit_Private/DDBaseAnimation/DDTransitionAnimation (0.3.2)
- DDBasicControlsKit_Private/DDBaseAttributedString (0.3.2): - DDBasicControlsKit_Private/DDBaseAttributedString (0.3.2):
@@ -374,7 +374,7 @@ SPEC CHECKSUMS:
AMapTrack-NO-IDFA: 7109cf1867f5d6c407c8191492b1f73101e1682e AMapTrack-NO-IDFA: 7109cf1867f5d6c407c8191492b1f73101e1682e
BRPickerView: 2531a2d4d0fea0b57a1c738de215af0f88863a2f BRPickerView: 2531a2d4d0fea0b57a1c738de215af0f88863a2f
CocoaDebug: b38d31464b91a9775928f8667d114db07b136565 CocoaDebug: b38d31464b91a9775928f8667d114db07b136565
DDAudioPlayerKit_Private: b18c9b8b4ee2d421227895edac27b2a799fcdb0d DDAudioPlayerKit_Private: b727c241c5cd06f09d64bb2b3d5682b6e9eb8165
DDAutoUIKit_Private: 188066b4d13c8096676ddd9efa15974238f6dca3 DDAutoUIKit_Private: 188066b4d13c8096676ddd9efa15974238f6dca3
DDBasicControlsKit_Private: d3aebc505eaac273a8f6b85238662ad6e64a1a08 DDBasicControlsKit_Private: d3aebc505eaac273a8f6b85238662ad6e64a1a08
DDCategoryKit_Private: 19d515c43d5e9c4ee80b8ccf3fb8ab40368b8668 DDCategoryKit_Private: 19d515c43d5e9c4ee80b8ccf3fb8ab40368b8668
@@ -404,6 +404,6 @@ SPEC CHECKSUMS:
SwiftEntryKit: 61b5fa36f34a97dd8013e48a7345bc4c4720be9a SwiftEntryKit: 61b5fa36f34a97dd8013e48a7345bc4c4720be9a
ZLPhotoBrowser: 0563c2bfc7b247b65d023d646012f46cba94101b ZLPhotoBrowser: 0563c2bfc7b247b65d023d646012f46cba94101b
PODFILE CHECKSUM: 4a6b876956d7d3482deecd88ffe2bf250614e00b PODFILE CHECKSUM: 8b73e7b8269156e4fa26d46c40f768817fa76230
COCOAPODS: 1.11.3 COCOAPODS: 1.11.3

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,4 @@
APPLICATION_EXTENSION_API_ONLY = YES
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DDAudioPlayerKit_Private CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DDAudioPlayerKit_Private
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64

View File

@@ -1,3 +1,4 @@
APPLICATION_EXTENSION_API_ONLY = YES
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DDAudioPlayerKit_Private CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DDAudioPlayerKit_Private
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64

View File

@@ -1,6 +1,29 @@
# Acknowledgements # Acknowledgements
This application makes use of the following third party libraries: This application makes use of the following third party libraries:
## DDAudioPlayerKit_Private
Copyright (c) 2023 DDIsFriend <DDIsFriend@163.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
## JCore ## JCore
Copyright jpush.cn Copyright jpush.cn

View File

@@ -12,6 +12,35 @@
<key>Type</key> <key>Type</key>
<string>PSGroupSpecifier</string> <string>PSGroupSpecifier</string>
</dict> </dict>
<dict>
<key>FooterText</key>
<string>Copyright (c) 2023 DDIsFriend &lt;DDIsFriend@163.com&gt;
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
</string>
<key>License</key>
<string>MIT</string>
<key>Title</key>
<string>DDAudioPlayerKit_Private</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict> <dict>
<key>FooterText</key> <key>FooterText</key>
<string>Copyright jpush.cn</string> <string>Copyright jpush.cn</string>

View File

@@ -0,0 +1,16 @@
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#else
#ifndef FOUNDATION_EXPORT
#if defined(__cplusplus)
#define FOUNDATION_EXPORT extern "C"
#else
#define FOUNDATION_EXPORT extern
#endif
#endif
#endif
FOUNDATION_EXPORT double Pods_OrderSchedulingNotificationServiceVersionNumber;
FOUNDATION_EXPORT const unsigned char Pods_OrderSchedulingNotificationServiceVersionString[];

View File

@@ -2,11 +2,14 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/JCore" "${PODS_ROOT}/JPush" "${PODS_ROOT}/JPushExtension" FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/JCore" "${PODS_ROOT}/JPush" "${PODS_ROOT}/JPushExtension"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BRPickerView" "${PODS_ROOT}/Headers/Public/CocoaDebug" "${PODS_ROOT}/Headers/Public/DDBasicControlsKit_Private" "${PODS_ROOT}/Headers/Public/DDCategoryKit_Private" "${PODS_ROOT}/Headers/Public/DDLogKit_Private" "${PODS_ROOT}/Headers/Public/DDMAMapKit_Private" "${PODS_ROOT}/Headers/Public/DDProgressHUDKit_Private" "${PODS_ROOT}/Headers/Public/DDTimerKit_Private" "${PODS_ROOT}/Headers/Public/DDWebImageKit_Private" "${PODS_ROOT}/Headers/Public/DDZFPlayerKit_Private" "${PODS_ROOT}/Headers/Public/JXCategoryView" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/RxCocoa" "${PODS_ROOT}/Headers/Public/ZLPhotoBrowser" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JCore/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPush/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPushExtension/Headers" HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BRPickerView" "${PODS_ROOT}/Headers/Public/CocoaDebug" "${PODS_ROOT}/Headers/Public/DDBasicControlsKit_Private" "${PODS_ROOT}/Headers/Public/DDCategoryKit_Private" "${PODS_ROOT}/Headers/Public/DDLogKit_Private" "${PODS_ROOT}/Headers/Public/DDMAMapKit_Private" "${PODS_ROOT}/Headers/Public/DDProgressHUDKit_Private" "${PODS_ROOT}/Headers/Public/DDTimerKit_Private" "${PODS_ROOT}/Headers/Public/DDWebImageKit_Private" "${PODS_ROOT}/Headers/Public/DDZFPlayerKit_Private" "${PODS_ROOT}/Headers/Public/JXCategoryView" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/RxCocoa" "${PODS_ROOT}/Headers/Public/ZLPhotoBrowser" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JCore/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPush/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPushExtension/Headers"
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_XCFRAMEWORKS_BUILD_DIR}/JCore" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPush" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPushExtension" LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" "${PODS_CONFIGURATION_BUILD_DIR}/DDAudioPlayerKit_Private" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JCore" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPush" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPushExtension" /usr/lib/swift
OTHER_LDFLAGS = $(inherited) -ObjC -l"JCore" -l"JPush" -l"JPushExtension" -l"resolv" -l"z" -framework "CFNetwork" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreTelephony" -framework "Foundation" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "WebKit" -weak_framework "AppTrackingTransparency" -weak_framework "UserNotifications" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DDAudioPlayerKit_Private/DDAudioPlayerKit_Private.modulemap"
OTHER_LDFLAGS = $(inherited) -ObjC -l"DDAudioPlayerKit_Private" -l"JCore" -l"JPush" -l"JPushExtension" -l"resolv" -l"z" -framework "CFNetwork" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreTelephony" -framework "Foundation" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "WebKit" -weak_framework "AppTrackingTransparency" -weak_framework "UserNotifications"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DDAudioPlayerKit_Private/DDAudioPlayerKit_Private.modulemap"
PODS_BUILD_DIR = ${BUILD_DIR} PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
PODS_ROOT = ${SRCROOT}/Pods PODS_ROOT = ${SRCROOT}/Pods
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DDAudioPlayerKit_Private"
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES

View File

@@ -0,0 +1,6 @@
module Pods_OrderSchedulingNotificationService {
umbrella header "Pods-OrderSchedulingNotificationService-umbrella.h"
export *
module * { export * }
}

View File

@@ -2,11 +2,14 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/JCore" "${PODS_ROOT}/JPush" "${PODS_ROOT}/JPushExtension" FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/JCore" "${PODS_ROOT}/JPush" "${PODS_ROOT}/JPushExtension"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BRPickerView" "${PODS_ROOT}/Headers/Public/CocoaDebug" "${PODS_ROOT}/Headers/Public/DDBasicControlsKit_Private" "${PODS_ROOT}/Headers/Public/DDCategoryKit_Private" "${PODS_ROOT}/Headers/Public/DDLogKit_Private" "${PODS_ROOT}/Headers/Public/DDMAMapKit_Private" "${PODS_ROOT}/Headers/Public/DDProgressHUDKit_Private" "${PODS_ROOT}/Headers/Public/DDTimerKit_Private" "${PODS_ROOT}/Headers/Public/DDWebImageKit_Private" "${PODS_ROOT}/Headers/Public/DDZFPlayerKit_Private" "${PODS_ROOT}/Headers/Public/JXCategoryView" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/RxCocoa" "${PODS_ROOT}/Headers/Public/ZLPhotoBrowser" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JCore/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPush/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPushExtension/Headers" HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BRPickerView" "${PODS_ROOT}/Headers/Public/CocoaDebug" "${PODS_ROOT}/Headers/Public/DDBasicControlsKit_Private" "${PODS_ROOT}/Headers/Public/DDCategoryKit_Private" "${PODS_ROOT}/Headers/Public/DDLogKit_Private" "${PODS_ROOT}/Headers/Public/DDMAMapKit_Private" "${PODS_ROOT}/Headers/Public/DDProgressHUDKit_Private" "${PODS_ROOT}/Headers/Public/DDTimerKit_Private" "${PODS_ROOT}/Headers/Public/DDWebImageKit_Private" "${PODS_ROOT}/Headers/Public/DDZFPlayerKit_Private" "${PODS_ROOT}/Headers/Public/JXCategoryView" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/RxCocoa" "${PODS_ROOT}/Headers/Public/ZLPhotoBrowser" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JCore/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPush/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPushExtension/Headers"
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_XCFRAMEWORKS_BUILD_DIR}/JCore" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPush" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPushExtension" LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" "${PODS_CONFIGURATION_BUILD_DIR}/DDAudioPlayerKit_Private" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JCore" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPush" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPushExtension" /usr/lib/swift
OTHER_LDFLAGS = $(inherited) -ObjC -l"JCore" -l"JPush" -l"JPushExtension" -l"resolv" -l"z" -framework "CFNetwork" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreTelephony" -framework "Foundation" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "WebKit" -weak_framework "AppTrackingTransparency" -weak_framework "UserNotifications" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DDAudioPlayerKit_Private/DDAudioPlayerKit_Private.modulemap"
OTHER_LDFLAGS = $(inherited) -ObjC -l"DDAudioPlayerKit_Private" -l"JCore" -l"JPush" -l"JPushExtension" -l"resolv" -l"z" -framework "CFNetwork" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreTelephony" -framework "Foundation" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "WebKit" -weak_framework "AppTrackingTransparency" -weak_framework "UserNotifications"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DDAudioPlayerKit_Private/DDAudioPlayerKit_Private.modulemap"
PODS_BUILD_DIR = ${BUILD_DIR} PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
PODS_ROOT = ${SRCROOT}/Pods PODS_ROOT = ${SRCROOT}/Pods
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DDAudioPlayerKit_Private"
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES