update
This commit is contained in:
@@ -7,75 +7,124 @@
|
||||
|
||||
import Foundation
|
||||
import AVFoundation
|
||||
//import DDLogKit_Private
|
||||
|
||||
public let DDAS = DDAudioService.default
|
||||
|
||||
open class DDAudioService {
|
||||
public static let `default` = DDAudioService()
|
||||
private var items : [DDAudioServiceItem] = []
|
||||
|
||||
private var audioSoundID : SystemSoundID = 0
|
||||
private var vibrateSoundID : SystemSoundID = 0
|
||||
private var audioNumberOfLoops : Int = 0
|
||||
private var vibrateNumberOfLoops : Int = 0
|
||||
private var endSound : Bool = false
|
||||
private var endVibrate : Bool = false
|
||||
|
||||
public func playSoundWithVibrate(audioUrl:URL,numberOfLoops:Int = 1) {
|
||||
playVibrate(numberOfLoops: -1)
|
||||
playSound(audioUrl: audioUrl,numberOfLoops: numberOfLoops) {[weak self] in
|
||||
self?.stopSound()
|
||||
self?.stopVibrate()
|
||||
public func playSoundWithVibrate(audioUrl:URL,name:String,numberOfLoops:Int = 1,timeInterval:TimeInterval = 0,eachLoopCompletionBlock: (() -> Void)? = nil,endCompletionBlock: (() -> Void)? = nil) {
|
||||
let item = DDAudioServiceItem(name: name)
|
||||
items.append(item)
|
||||
item.playSoundWithVibrate(audioUrl: audioUrl,numberOfLoops: numberOfLoops,timeInterval: timeInterval,eachLoopCompletionBlock: eachLoopCompletionBlock,endCompletionBlock: endCompletionBlock)
|
||||
}
|
||||
|
||||
public func playSound(audioUrl:URL,name:String,numberOfLoops:Int = 1,timeInterval:TimeInterval = 0,eachLoopCompletionBlock: (() -> Void)? = nil,endCompletionBlock: (() -> Void)? = nil) {
|
||||
let item = DDAudioServiceItem(name: name)
|
||||
items.append(item)
|
||||
item.playSound(audioUrl: audioUrl,numberOfLoops: numberOfLoops,timeInterval: timeInterval,eachLoopCompletionBlock: eachLoopCompletionBlock,endCompletionBlock: endCompletionBlock)
|
||||
}
|
||||
|
||||
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() {
|
||||
stopSound()
|
||||
stopVibrate()
|
||||
public func stopSound(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.stopSound {[weak self] in
|
||||
self?.items.remove(at: index)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public func playSound(audioUrl:URL,numberOfLoops:Int = 1, endCompletionBlock: (() -> Void)? = nil) {
|
||||
self.audioNumberOfLoops = numberOfLoops
|
||||
public func stopVibrate(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.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
|
||||
AudioServicesCreateSystemSoundID(audioUrl as CFURL, &audioSoundID)
|
||||
self.audioSoundID = audioSoundID
|
||||
DispatchQueue.global().async {[weak self] in
|
||||
self?.playSound(audioSoundID: audioSoundID,leftNumberOfLoops: numberOfLoops,endCompletionBlock: {
|
||||
if endCompletionBlock != nil {
|
||||
endCompletionBlock!()
|
||||
}
|
||||
})
|
||||
self?.playSound(audioSoundID: audioSoundID,leftNumberOfLoops: numberOfLoops,timeInterval: timeInterval,eachLoopCompletionBlock: eachLoopCompletionBlock,endCompletionBlock: endCompletionBlock)
|
||||
}
|
||||
}
|
||||
|
||||
public func playVibrate(numberOfLoops:Int = 1, endCompletionBlock: (() -> Void)? = nil) {
|
||||
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) {
|
||||
private func playSound(audioSoundID:SystemSoundID,leftNumberOfLoops:Int,timeInterval:TimeInterval,eachLoopCompletionBlock: (() -> Void)?, endCompletionBlock: (() -> Void)?) {
|
||||
var changeLeftNumberOfLoops = leftNumberOfLoops
|
||||
AudioServicesPlaySystemSoundWithCompletion(audioSoundID) {[weak self] in
|
||||
// 每次loop后回调
|
||||
if eachLoopCompletionBlock != nil {
|
||||
eachLoopCompletionBlock!()
|
||||
}
|
||||
@@ -83,22 +132,61 @@ open class DDAudioService {
|
||||
// 当前的剩余为0就结束
|
||||
changeLeftNumberOfLoops-=1
|
||||
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 {
|
||||
// play所有loops后回调
|
||||
endCompletionBlock!()
|
||||
}
|
||||
print("sound播放结束")
|
||||
}else{
|
||||
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
|
||||
AudioServicesPlayAlertSoundWithCompletion(vibrateSoundID) {[weak self] in
|
||||
// 每次loop后回调
|
||||
if eachLoopCompletionBlock != nil {
|
||||
eachLoopCompletionBlock!()
|
||||
}
|
||||
@@ -106,17 +194,43 @@ open class DDAudioService {
|
||||
// 当前的剩余为0就结束
|
||||
changeLeftNumberOfLoops-=1
|
||||
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 {
|
||||
// play完所有loops后回调
|
||||
endCompletionBlock!()
|
||||
}
|
||||
print("vibrate播放结束")
|
||||
}else{
|
||||
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()
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
93
Pods/DDAudioPlayerKit_Private/DDAudioPlayerKit_Private/Classes/DDSpeechSynthesizer.swift
generated
Normal file
93
Pods/DDAudioPlayerKit_Private/DDAudioPlayerKit_Private/Classes/DDSpeechSynthesizer.swift
generated
Normal 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
6
Pods/Manifest.lock
generated
@@ -23,7 +23,7 @@ PODS:
|
||||
- BRPickerView/StringPickerView (2.8.1):
|
||||
- BRPickerView/Base
|
||||
- CocoaDebug (1.7.7)
|
||||
- DDAudioPlayerKit_Private (0.1.0)
|
||||
- DDAudioPlayerKit_Private (0.1.3)
|
||||
- DDAutoUIKit_Private (0.1.3)
|
||||
- DDBasicControlsKit_Private/DDBaseAnimation/DDTransitionAnimation (0.3.2)
|
||||
- DDBasicControlsKit_Private/DDBaseAttributedString (0.3.2):
|
||||
@@ -374,7 +374,7 @@ SPEC CHECKSUMS:
|
||||
AMapTrack-NO-IDFA: 7109cf1867f5d6c407c8191492b1f73101e1682e
|
||||
BRPickerView: 2531a2d4d0fea0b57a1c738de215af0f88863a2f
|
||||
CocoaDebug: b38d31464b91a9775928f8667d114db07b136565
|
||||
DDAudioPlayerKit_Private: b18c9b8b4ee2d421227895edac27b2a799fcdb0d
|
||||
DDAudioPlayerKit_Private: b727c241c5cd06f09d64bb2b3d5682b6e9eb8165
|
||||
DDAutoUIKit_Private: 188066b4d13c8096676ddd9efa15974238f6dca3
|
||||
DDBasicControlsKit_Private: d3aebc505eaac273a8f6b85238662ad6e64a1a08
|
||||
DDCategoryKit_Private: 19d515c43d5e9c4ee80b8ccf3fb8ab40368b8668
|
||||
@@ -404,6 +404,6 @@ SPEC CHECKSUMS:
|
||||
SwiftEntryKit: 61b5fa36f34a97dd8013e48a7345bc4c4720be9a
|
||||
ZLPhotoBrowser: 0563c2bfc7b247b65d023d646012f46cba94101b
|
||||
|
||||
PODFILE CHECKSUM: 4a6b876956d7d3482deecd88ffe2bf250614e00b
|
||||
PODFILE CHECKSUM: 8b73e7b8269156e4fa26d46c40f768817fa76230
|
||||
|
||||
COCOAPODS: 1.11.3
|
||||
|
||||
15752
Pods/Pods.xcodeproj/project.pbxproj
generated
15752
Pods/Pods.xcodeproj/project.pbxproj
generated
File diff suppressed because it is too large
Load Diff
@@ -1,3 +1,4 @@
|
||||
APPLICATION_EXTENSION_API_ONLY = YES
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DDAudioPlayerKit_Private
|
||||
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
APPLICATION_EXTENSION_API_ONLY = YES
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DDAudioPlayerKit_Private
|
||||
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
|
||||
|
||||
@@ -1,6 +1,29 @@
|
||||
# Acknowledgements
|
||||
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
|
||||
|
||||
Copyright jpush.cn
|
||||
|
||||
@@ -12,6 +12,35 @@
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>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.
|
||||
</string>
|
||||
<key>License</key>
|
||||
<string>MIT</string>
|
||||
<key>Title</key>
|
||||
<string>DDAudioPlayerKit_Private</string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>Copyright jpush.cn</string>
|
||||
|
||||
@@ -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[];
|
||||
|
||||
@@ -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"
|
||||
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"
|
||||
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_XCFRAMEWORKS_BUILD_DIR}/JCore" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPush" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPushExtension"
|
||||
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"
|
||||
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_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_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
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
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
module Pods_OrderSchedulingNotificationService {
|
||||
umbrella header "Pods-OrderSchedulingNotificationService-umbrella.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
@@ -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"
|
||||
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"
|
||||
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_XCFRAMEWORKS_BUILD_DIR}/JCore" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPush" "${PODS_XCFRAMEWORKS_BUILD_DIR}/JPushExtension"
|
||||
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"
|
||||
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_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_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user