refactor(ads): Yandex 광고 코드와 SDK 의존성을 제거한다
This commit is contained in:
@@ -10,7 +10,6 @@ target 'SodaLive' do
|
|||||||
pod 'AgoraRtm', '2.2.4'
|
pod 'AgoraRtm', '2.2.4'
|
||||||
pod 'GoogleSignIn'
|
pod 'GoogleSignIn'
|
||||||
pod 'GoogleSignInSwiftSupport'
|
pod 'GoogleSignInSwiftSupport'
|
||||||
pod 'YandexMobileAds', '8.0.0'
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -23,7 +22,6 @@ target 'SodaLive-dev' do
|
|||||||
pod 'AgoraRtm', '2.2.4'
|
pod 'AgoraRtm', '2.2.4'
|
||||||
pod 'GoogleSignIn'
|
pod 'GoogleSignIn'
|
||||||
pod 'GoogleSignInSwiftSupport'
|
pod 'GoogleSignInSwiftSupport'
|
||||||
pod 'YandexMobileAds', '8.0.0'
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
+1
-157
@@ -15,74 +15,6 @@ PODS:
|
|||||||
- GoogleUtilities/Environment (~> 8.0)
|
- GoogleUtilities/Environment (~> 8.0)
|
||||||
- GoogleUtilities/UserDefaults (~> 8.0)
|
- GoogleUtilities/UserDefaults (~> 8.0)
|
||||||
- PromisesObjC (~> 2.4)
|
- PromisesObjC (~> 2.4)
|
||||||
- AppMetricaAdSupport (6.0.0):
|
|
||||||
- AppMetricaCore (= 6.0.0)
|
|
||||||
- AppMetricaCoreExtension (= 6.0.0)
|
|
||||||
- AppMetricaCore (6.0.0):
|
|
||||||
- AppMetricaCoreUtils (= 6.0.0)
|
|
||||||
- AppMetricaEncodingUtils (= 6.0.0)
|
|
||||||
- AppMetricaFMDB (= 6.0.0)
|
|
||||||
- AppMetricaHostState (= 6.0.0)
|
|
||||||
- AppMetricaIdentifiers (= 6.0.0)
|
|
||||||
- AppMetricaKeychain (= 6.0.0)
|
|
||||||
- AppMetricaLog (= 6.0.0)
|
|
||||||
- AppMetricaNetwork (= 6.0.0)
|
|
||||||
- AppMetricaPlatform (= 6.0.0)
|
|
||||||
- AppMetricaProtobuf (= 6.0.0)
|
|
||||||
- AppMetricaProtobufUtils (= 6.0.0)
|
|
||||||
- AppMetricaStorageUtils (= 6.0.0)
|
|
||||||
- AppMetricaCoreExtension (6.0.0):
|
|
||||||
- AppMetricaCore (= 6.0.0)
|
|
||||||
- AppMetricaStorageUtils (= 6.0.0)
|
|
||||||
- AppMetricaCoreUtils (6.0.0):
|
|
||||||
- AppMetricaLog (= 6.0.0)
|
|
||||||
- AppMetricaEncodingUtils (6.0.0):
|
|
||||||
- AppMetricaCoreUtils (= 6.0.0)
|
|
||||||
- AppMetricaLog (= 6.0.0)
|
|
||||||
- AppMetricaPlatform (= 6.0.0)
|
|
||||||
- AppMetricaFMDB (6.0.0)
|
|
||||||
- AppMetricaHostState (6.0.0):
|
|
||||||
- AppMetricaCoreUtils (= 6.0.0)
|
|
||||||
- AppMetricaLog (= 6.0.0)
|
|
||||||
- AppMetricaIdentifiers (6.0.0):
|
|
||||||
- AppMetricaKeychain (= 6.0.0)
|
|
||||||
- AppMetricaLogSwift (= 6.0.0)
|
|
||||||
- AppMetricaPlatform (= 6.0.0)
|
|
||||||
- AppMetricaStorageUtils (= 6.0.0)
|
|
||||||
- AppMetricaSynchronization (= 6.0.0)
|
|
||||||
- AppMetricaIDSync (6.0.0):
|
|
||||||
- AppMetricaCore (= 6.0.0)
|
|
||||||
- AppMetricaCoreExtension (= 6.0.0)
|
|
||||||
- AppMetricaCoreUtils (= 6.0.0)
|
|
||||||
- AppMetricaLog (= 6.0.0)
|
|
||||||
- AppMetricaNetwork (= 6.0.0)
|
|
||||||
- AppMetricaPlatform (= 6.0.0)
|
|
||||||
- AppMetricaStorageUtils (= 6.0.0)
|
|
||||||
- AppMetricaKeychain (6.0.0):
|
|
||||||
- AppMetricaCoreUtils (= 6.0.0)
|
|
||||||
- AppMetricaLog (= 6.0.0)
|
|
||||||
- AppMetricaStorageUtils (= 6.0.0)
|
|
||||||
- AppMetricaLibraryAdapter (6.0.0):
|
|
||||||
- AppMetricaCore (= 6.0.0)
|
|
||||||
- AppMetricaCoreExtension (= 6.0.0)
|
|
||||||
- AppMetricaLog (6.0.0)
|
|
||||||
- AppMetricaLogSwift (6.0.0):
|
|
||||||
- AppMetricaLog (= 6.0.0)
|
|
||||||
- AppMetricaNetwork (6.0.0):
|
|
||||||
- AppMetricaCoreUtils (= 6.0.0)
|
|
||||||
- AppMetricaLog (= 6.0.0)
|
|
||||||
- AppMetricaPlatform (= 6.0.0)
|
|
||||||
- AppMetricaPlatform (6.0.0):
|
|
||||||
- AppMetricaCoreUtils (= 6.0.0)
|
|
||||||
- AppMetricaLog (= 6.0.0)
|
|
||||||
- AppMetricaProtobuf (6.0.0)
|
|
||||||
- AppMetricaProtobufUtils (6.0.0):
|
|
||||||
- AppMetricaProtobuf (= 6.0.0)
|
|
||||||
- AppMetricaStorageUtils (6.0.0):
|
|
||||||
- AppMetricaCoreUtils (= 6.0.0)
|
|
||||||
- AppMetricaLog (= 6.0.0)
|
|
||||||
- AppMetricaSynchronization (6.0.0):
|
|
||||||
- AppMetricaLogSwift (= 6.0.0)
|
|
||||||
- Bootpay (4.4.6):
|
- Bootpay (4.4.6):
|
||||||
- CryptoSwift
|
- CryptoSwift
|
||||||
- NVActivityIndicatorView
|
- NVActivityIndicatorView
|
||||||
@@ -95,19 +27,6 @@ PODS:
|
|||||||
- SnapKit
|
- SnapKit
|
||||||
- SwiftyJSON
|
- SwiftyJSON
|
||||||
- CryptoSwift (1.8.4)
|
- CryptoSwift (1.8.4)
|
||||||
- DivKit (32.46.0):
|
|
||||||
- DivKit_LayoutKit (= 32.46.0)
|
|
||||||
- DivKit_Serialization (= 32.46.0)
|
|
||||||
- VGSL (~> 7.21)
|
|
||||||
- DivKit_LayoutKit (32.46.0):
|
|
||||||
- DivKit_LayoutKitInterface (= 32.46.0)
|
|
||||||
- VGSL (~> 7.21)
|
|
||||||
- DivKit_LayoutKitInterface (32.46.0):
|
|
||||||
- VGSL (~> 7.21)
|
|
||||||
- DivKit_Serialization (32.46.0):
|
|
||||||
- VGSL (~> 7.21)
|
|
||||||
- DivKitBinaryCompatibilityFacade (5.3.0):
|
|
||||||
- DivKit (~> 32.14)
|
|
||||||
- GoogleSignIn (9.1.0):
|
- GoogleSignIn (9.1.0):
|
||||||
- AppAuth (~> 2.0)
|
- AppAuth (~> 2.0)
|
||||||
- AppCheckCore (~> 11.0)
|
- AppCheckCore (~> 11.0)
|
||||||
@@ -135,29 +54,12 @@ PODS:
|
|||||||
- PromisesObjC (2.4.0)
|
- PromisesObjC (2.4.0)
|
||||||
- SnapKit (5.7.1)
|
- SnapKit (5.7.1)
|
||||||
- SwiftyJSON (5.0.2)
|
- SwiftyJSON (5.0.2)
|
||||||
- VGSL (7.21.0):
|
|
||||||
- VGSLFundamentals (= 7.21.0)
|
|
||||||
- VGSLNetworking (= 7.21.0)
|
|
||||||
- VGSLUI (= 7.21.0)
|
|
||||||
- VGSLFundamentals (7.21.0)
|
|
||||||
- VGSLNetworking (7.21.0):
|
|
||||||
- VGSLFundamentals (= 7.21.0)
|
|
||||||
- VGSLUI (= 7.21.0)
|
|
||||||
- VGSLUI (7.21.0):
|
|
||||||
- VGSLFundamentals (= 7.21.0)
|
|
||||||
- YandexMobileAds (8.0.0):
|
|
||||||
- AppMetricaAdSupport (~> 6.0.0)
|
|
||||||
- AppMetricaCore (~> 6.0.0)
|
|
||||||
- AppMetricaIDSync (~> 6.0.0)
|
|
||||||
- AppMetricaLibraryAdapter (~> 6.0.0)
|
|
||||||
- DivKitBinaryCompatibilityFacade (~> 5.3.0)
|
|
||||||
|
|
||||||
DEPENDENCIES:
|
DEPENDENCIES:
|
||||||
- AgoraRtm (= 2.2.4)
|
- AgoraRtm (= 2.2.4)
|
||||||
- BootpayUI (= 4.4.10)
|
- BootpayUI (= 4.4.10)
|
||||||
- GoogleSignIn
|
- GoogleSignIn
|
||||||
- GoogleSignInSwiftSupport
|
- GoogleSignInSwiftSupport
|
||||||
- YandexMobileAds (= 8.0.0)
|
|
||||||
|
|
||||||
SPEC REPOS:
|
SPEC REPOS:
|
||||||
trunk:
|
trunk:
|
||||||
@@ -165,33 +67,9 @@ SPEC REPOS:
|
|||||||
- Alamofire
|
- Alamofire
|
||||||
- AppAuth
|
- AppAuth
|
||||||
- AppCheckCore
|
- AppCheckCore
|
||||||
- AppMetricaAdSupport
|
|
||||||
- AppMetricaCore
|
|
||||||
- AppMetricaCoreExtension
|
|
||||||
- AppMetricaCoreUtils
|
|
||||||
- AppMetricaEncodingUtils
|
|
||||||
- AppMetricaFMDB
|
|
||||||
- AppMetricaHostState
|
|
||||||
- AppMetricaIdentifiers
|
|
||||||
- AppMetricaIDSync
|
|
||||||
- AppMetricaKeychain
|
|
||||||
- AppMetricaLibraryAdapter
|
|
||||||
- AppMetricaLog
|
|
||||||
- AppMetricaLogSwift
|
|
||||||
- AppMetricaNetwork
|
|
||||||
- AppMetricaPlatform
|
|
||||||
- AppMetricaProtobuf
|
|
||||||
- AppMetricaProtobufUtils
|
|
||||||
- AppMetricaStorageUtils
|
|
||||||
- AppMetricaSynchronization
|
|
||||||
- Bootpay
|
- Bootpay
|
||||||
- BootpayUI
|
- BootpayUI
|
||||||
- CryptoSwift
|
- CryptoSwift
|
||||||
- DivKit
|
|
||||||
- DivKit_LayoutKit
|
|
||||||
- DivKit_LayoutKitInterface
|
|
||||||
- DivKit_Serialization
|
|
||||||
- DivKitBinaryCompatibilityFacade
|
|
||||||
- GoogleSignIn
|
- GoogleSignIn
|
||||||
- GoogleSignInSwiftSupport
|
- GoogleSignInSwiftSupport
|
||||||
- GoogleUtilities
|
- GoogleUtilities
|
||||||
@@ -202,44 +80,15 @@ SPEC REPOS:
|
|||||||
- PromisesObjC
|
- PromisesObjC
|
||||||
- SnapKit
|
- SnapKit
|
||||||
- SwiftyJSON
|
- SwiftyJSON
|
||||||
- VGSL
|
|
||||||
- VGSLFundamentals
|
|
||||||
- VGSLNetworking
|
|
||||||
- VGSLUI
|
|
||||||
- YandexMobileAds
|
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
AgoraRtm: 534144434383d41b3b0ebfae2a961ef0f51b0645
|
AgoraRtm: 534144434383d41b3b0ebfae2a961ef0f51b0645
|
||||||
Alamofire: 7193b3b92c74a07f85569e1a6c4f4237291e7496
|
Alamofire: 7193b3b92c74a07f85569e1a6c4f4237291e7496
|
||||||
AppAuth: 1c1a8afa7e12f2ec3a294d9882dfa5ab7d3cb063
|
AppAuth: 1c1a8afa7e12f2ec3a294d9882dfa5ab7d3cb063
|
||||||
AppCheckCore: cc8fd0a3a230ddd401f326489c99990b013f0c4f
|
AppCheckCore: cc8fd0a3a230ddd401f326489c99990b013f0c4f
|
||||||
AppMetricaAdSupport: 43a4d1509cdbfe712fb3f009fe60d3a6481816a0
|
|
||||||
AppMetricaCore: dae62fe7f95cd665b142218f3d94cf63262c195b
|
|
||||||
AppMetricaCoreExtension: 72da13ba849d4676f276ab86ff429bdf700eadc3
|
|
||||||
AppMetricaCoreUtils: 5e7c91cbafe0225dec2ded2bb3a806256e2ef791
|
|
||||||
AppMetricaEncodingUtils: a67df57f752dbbb174beea18f1de52d24853d834
|
|
||||||
AppMetricaFMDB: a3d8e45a5a85bec23a997be4469b92ab355a4df5
|
|
||||||
AppMetricaHostState: 1ac2ab5880aa30a358f55a044e57354dd8f9062f
|
|
||||||
AppMetricaIdentifiers: 00061e0cdcb371b74343a5491f54adfc1d470b25
|
|
||||||
AppMetricaIDSync: 91b403172ad78da3574c691ed34c25f69c2296ee
|
|
||||||
AppMetricaKeychain: 9ec64d877b8a3f6e823f3bbeef5e4086aa456686
|
|
||||||
AppMetricaLibraryAdapter: 56fa0f988850051d10f9ac3b6b9ace7bb6aa8fd7
|
|
||||||
AppMetricaLog: edd74df81c7557439c36c566989982f4c735e4d6
|
|
||||||
AppMetricaLogSwift: 3d2d4a3cbc33a680389b416a1c6a82ef4134da10
|
|
||||||
AppMetricaNetwork: 3dc6d768d4e932c3697c9c2c9a768de54e62059b
|
|
||||||
AppMetricaPlatform: 041a7b251ea1689e26626d9db8f331af1afe5bad
|
|
||||||
AppMetricaProtobuf: 01b141a164fa7277f641a29f30d5e571ea3d471a
|
|
||||||
AppMetricaProtobufUtils: dc48c7b84f3a1ef86ea218bbd97480ea9da4d3bc
|
|
||||||
AppMetricaStorageUtils: 78071115b9f5468d9e3b8184c456428cd9ee1dbd
|
|
||||||
AppMetricaSynchronization: 909bab97c61c0c147a435ce1620e4c8069e2d6b3
|
|
||||||
Bootpay: cd7f0542b096ab0af0b09a6e12a6b87f2cbbb531
|
Bootpay: cd7f0542b096ab0af0b09a6e12a6b87f2cbbb531
|
||||||
BootpayUI: beec5b0bba002b4dbced8c0ecace571ed6a017bc
|
BootpayUI: beec5b0bba002b4dbced8c0ecace571ed6a017bc
|
||||||
CryptoSwift: e64e11850ede528a02a0f3e768cec8e9d92ecb90
|
CryptoSwift: e64e11850ede528a02a0f3e768cec8e9d92ecb90
|
||||||
DivKit: c66e0fa88b4671f832fb9ca3f142d6f56a56919d
|
|
||||||
DivKit_LayoutKit: e30d4d345034c2dfb356e5a891dd359ac79a5aff
|
|
||||||
DivKit_LayoutKitInterface: 320f0ef8c4f95bb8212b13400502adf0259c0b21
|
|
||||||
DivKit_Serialization: c5ba4f12034eca16960e80f369b689fd8cda95b0
|
|
||||||
DivKitBinaryCompatibilityFacade: fc2284a2edea4d65aa0966006ea63274eb9f721b
|
|
||||||
GoogleSignIn: fcee2257188d5eda57a5e2b6a715550ffff9206d
|
GoogleSignIn: fcee2257188d5eda57a5e2b6a715550ffff9206d
|
||||||
GoogleSignInSwiftSupport: aca902e4e15b234611ecac74ef5c8f61278f774e
|
GoogleSignInSwiftSupport: aca902e4e15b234611ecac74ef5c8f61278f774e
|
||||||
GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1
|
GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1
|
||||||
@@ -250,12 +99,7 @@ SPEC CHECKSUMS:
|
|||||||
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
||||||
SnapKit: d612e99e678a2d3b95bf60b0705ed0a35c03484a
|
SnapKit: d612e99e678a2d3b95bf60b0705ed0a35c03484a
|
||||||
SwiftyJSON: f5b1bf1cd8dd53cd25887ac0eabcfd92301c6a5a
|
SwiftyJSON: f5b1bf1cd8dd53cd25887ac0eabcfd92301c6a5a
|
||||||
VGSL: 0573c2b82b05aadcba4836398ce3778d271bfd13
|
|
||||||
VGSLFundamentals: 3a081684c1a5df5800bf88aca8a9bdff2c10cfd9
|
|
||||||
VGSLNetworking: 0ea8a335bc4f4eba3f6123ffe441cf1c08f267f2
|
|
||||||
VGSLUI: 249a16cccdb75f1a5a1733894d013bca76e27c5e
|
|
||||||
YandexMobileAds: ca6c63c4148ae87fefc1821d0b466ea567069d5b
|
|
||||||
|
|
||||||
PODFILE CHECKSUM: 525ba559e93875de1314bb1a7894791eee442151
|
PODFILE CHECKSUM: 70c5639090824ff26cfad959985347579609e1e6
|
||||||
|
|
||||||
COCOAPODS: 1.16.2
|
COCOAPODS: 1.16.2
|
||||||
|
|||||||
@@ -3,16 +3,10 @@
|
|||||||
archiveVersion = 1;
|
archiveVersion = 1;
|
||||||
classes = {
|
classes = {
|
||||||
};
|
};
|
||||||
objectVersion = 70;
|
objectVersion = 77;
|
||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
AC5200013012000000A5BBA3 /* AuthVerificationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5200003012000000A5BBA3 /* AuthVerificationView.swift */; };
|
|
||||||
AC5200023012000000A5BBA3 /* AuthVerificationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5200003012000000A5BBA3 /* AuthVerificationView.swift */; };
|
|
||||||
AC5200043012000000A5BBA3 /* AuthVerificationMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5200033012000000A5BBA3 /* AuthVerificationMock.swift */; };
|
|
||||||
AC5200053012000000A5BBA3 /* AuthVerificationMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5200033012000000A5BBA3 /* AuthVerificationMock.swift */; };
|
|
||||||
AC5100013012000000A5BBA3 /* AuthContentSettingsSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5100003012000000A5BBA3 /* AuthContentSettingsSheet.swift */; };
|
|
||||||
AC5100023012000000A5BBA3 /* AuthContentSettingsSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5100003012000000A5BBA3 /* AuthContentSettingsSheet.swift */; };
|
|
||||||
00C796627A6758D271215EC5 /* CreatorProfileItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26881ED30292E28D2E5F84CD /* CreatorProfileItem.swift */; };
|
00C796627A6758D271215EC5 /* CreatorProfileItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26881ED30292E28D2E5F84CD /* CreatorProfileItem.swift */; };
|
||||||
042BEE0C973700FB5F4540CD /* I18n.swift in Sources */ = {isa = PBXBuildFile; fileRef = 826D626B7714E5C28ED31074 /* I18n.swift */; };
|
042BEE0C973700FB5F4540CD /* I18n.swift in Sources */ = {isa = PBXBuildFile; fileRef = 826D626B7714E5C28ED31074 /* I18n.swift */; };
|
||||||
0470E68C6F302A131264E3AF /* ChannelDonationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DF2BFD2E09F509C44C92214 /* ChannelDonationViewModel.swift */; };
|
0470E68C6F302A131264E3AF /* ChannelDonationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DF2BFD2E09F509C44C92214 /* ChannelDonationViewModel.swift */; };
|
||||||
@@ -1679,7 +1673,6 @@
|
|||||||
843C3C5366C9D9DEE37878BF /* ChannelDonationItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A7650B281CE20A6F29F6253 /* ChannelDonationItemView.swift */; };
|
843C3C5366C9D9DEE37878BF /* ChannelDonationItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A7650B281CE20A6F29F6253 /* ChannelDonationItemView.swift */; };
|
||||||
85934EA071477BC71BFCDF5E /* Pods_SodaLive.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 19E2FD56B42EBD353B9D2016 /* Pods_SodaLive.framework */; };
|
85934EA071477BC71BFCDF5E /* Pods_SodaLive.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 19E2FD56B42EBD353B9D2016 /* Pods_SodaLive.framework */; };
|
||||||
895286621DBE8EC8C825A9B5 /* GetPushNotificationCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = B54EBFBCC66E5AC79197E1FC /* GetPushNotificationCategoryResponse.swift */; };
|
895286621DBE8EC8C825A9B5 /* GetPushNotificationCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = B54EBFBCC66E5AC79197E1FC /* GetPushNotificationCategoryResponse.swift */; };
|
||||||
89AF41E6A46CD84BA469F272 /* YandexAdSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = F064EC9D5711B91979F45C05 /* YandexAdSupport.swift */; };
|
|
||||||
89BA3654EB2D35AC48F99472 /* LanguageService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7132AA3D131A8DF7B8D783BE /* LanguageService.swift */; };
|
89BA3654EB2D35AC48F99472 /* LanguageService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7132AA3D131A8DF7B8D783BE /* LanguageService.swift */; };
|
||||||
8A3E98E8F5E3862EAED3B5F9 /* FontModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25D89184D67BD63E46E90281 /* FontModifier.swift */; };
|
8A3E98E8F5E3862EAED3B5F9 /* FontModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25D89184D67BD63E46E90281 /* FontModifier.swift */; };
|
||||||
8D359DA75B6E24D9FF0A0865 /* V2vModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C4AF495E30F2DB00C2FCB36 /* V2vModels.swift */; };
|
8D359DA75B6E24D9FF0A0865 /* V2vModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C4AF495E30F2DB00C2FCB36 /* V2vModels.swift */; };
|
||||||
@@ -1711,6 +1704,12 @@
|
|||||||
A4F100000000000000000003 /* LottieRefreshableScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4F100000000000000000006 /* LottieRefreshableScrollView.swift */; };
|
A4F100000000000000000003 /* LottieRefreshableScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4F100000000000000000006 /* LottieRefreshableScrollView.swift */; };
|
||||||
A4F100000000000000000004 /* LottieRefreshableScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4F100000000000000000006 /* LottieRefreshableScrollView.swift */; };
|
A4F100000000000000000004 /* LottieRefreshableScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4F100000000000000000006 /* LottieRefreshableScrollView.swift */; };
|
||||||
A840136779D6CC95F94CB681 /* HomeTitleBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAA81E8424A575A0F8546D31 /* HomeTitleBar.swift */; };
|
A840136779D6CC95F94CB681 /* HomeTitleBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAA81E8424A575A0F8546D31 /* HomeTitleBar.swift */; };
|
||||||
|
AC5100013012000000A5BBA3 /* AuthContentSettingsSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5100003012000000A5BBA3 /* AuthContentSettingsSheet.swift */; };
|
||||||
|
AC5100023012000000A5BBA3 /* AuthContentSettingsSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5100003012000000A5BBA3 /* AuthContentSettingsSheet.swift */; };
|
||||||
|
AC5200013012000000A5BBA3 /* AuthVerificationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5200003012000000A5BBA3 /* AuthVerificationView.swift */; };
|
||||||
|
AC5200023012000000A5BBA3 /* AuthVerificationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5200003012000000A5BBA3 /* AuthVerificationView.swift */; };
|
||||||
|
AC5200043012000000A5BBA3 /* AuthVerificationMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5200033012000000A5BBA3 /* AuthVerificationMock.swift */; };
|
||||||
|
AC5200053012000000A5BBA3 /* AuthVerificationMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5200033012000000A5BBA3 /* AuthVerificationMock.swift */; };
|
||||||
ACD71056E97E13E48941ABBB /* MainPlaceholderTabView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7900EA9FD1150BABE64CF1B3 /* MainPlaceholderTabView.swift */; };
|
ACD71056E97E13E48941ABBB /* MainPlaceholderTabView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7900EA9FD1150BABE64CF1B3 /* MainPlaceholderTabView.swift */; };
|
||||||
AD6424211AA898794BBE8470 /* SectionTitle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D16C12DFB83FE164B38CC066 /* SectionTitle.swift */; };
|
AD6424211AA898794BBE8470 /* SectionTitle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D16C12DFB83FE164B38CC066 /* SectionTitle.swift */; };
|
||||||
AEFFD4DC842837ACF98BE697 /* PostChannelDonationRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BBDC3ECBBE049EAA4057D3A /* PostChannelDonationRequest.swift */; };
|
AEFFD4DC842837ACF98BE697 /* PostChannelDonationRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BBDC3ECBBE049EAA4057D3A /* PostChannelDonationRequest.swift */; };
|
||||||
@@ -1880,7 +1879,6 @@
|
|||||||
C0A743000000000000000011 /* UserCreatorChatSessionNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A740000000000000000011 /* UserCreatorChatSessionNotification.swift */; };
|
C0A743000000000000000011 /* UserCreatorChatSessionNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A740000000000000000011 /* UserCreatorChatSessionNotification.swift */; };
|
||||||
C0D6E325AEFEEF476E7044AB /* CommunityPostCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE82912F2F111593BE42E33C /* CommunityPostCard.swift */; };
|
C0D6E325AEFEEF476E7044AB /* CommunityPostCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE82912F2F111593BE42E33C /* CommunityPostCard.swift */; };
|
||||||
C3CFF5936F1BAC5BC12E9DDB /* UpdateContentPreferenceRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CDFAA64C2CA4FCBBF00A024 /* UpdateContentPreferenceRequest.swift */; };
|
C3CFF5936F1BAC5BC12E9DDB /* UpdateContentPreferenceRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CDFAA64C2CA4FCBBF00A024 /* UpdateContentPreferenceRequest.swift */; };
|
||||||
C45F071870A4DB48ABAE8BC5 /* YandexAdSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = F064EC9D5711B91979F45C05 /* YandexAdSupport.swift */; };
|
|
||||||
C4A7064704896D68ACBA135F /* PushNotificationListItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FA7A276BF4A47206ED702A7 /* PushNotificationListItemView.swift */; };
|
C4A7064704896D68ACBA135F /* PushNotificationListItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FA7A276BF4A47206ED702A7 /* PushNotificationListItemView.swift */; };
|
||||||
C74811010000000000000001 /* GiftBoxListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C74810010000000000000001 /* GiftBoxListViewModel.swift */; };
|
C74811010000000000000001 /* GiftBoxListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C74810010000000000000001 /* GiftBoxListViewModel.swift */; };
|
||||||
C74811010000000000000002 /* GiftBoxCardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C74810010000000000000002 /* GiftBoxCardView.swift */; };
|
C74811010000000000000002 /* GiftBoxCardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C74810010000000000000002 /* GiftBoxCardView.swift */; };
|
||||||
@@ -2208,9 +2206,6 @@
|
|||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
AC5200003012000000A5BBA3 /* AuthVerificationView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AuthVerificationView.swift; sourceTree = "<group>"; };
|
|
||||||
AC5200033012000000A5BBA3 /* AuthVerificationMock.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AuthVerificationMock.swift; sourceTree = "<group>"; };
|
|
||||||
AC5100003012000000A5BBA3 /* AuthContentSettingsSheet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AuthContentSettingsSheet.swift; sourceTree = "<group>"; };
|
|
||||||
002435A7145D59CCCA8F76D1 /* CreatorChannelFanTalkApi.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CreatorChannelFanTalkApi.swift; sourceTree = "<group>"; };
|
002435A7145D59CCCA8F76D1 /* CreatorChannelFanTalkApi.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CreatorChannelFanTalkApi.swift; sourceTree = "<group>"; };
|
||||||
0BBDC3ECBBE049EAA4057D3A /* PostChannelDonationRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostChannelDonationRequest.swift; sourceTree = "<group>"; };
|
0BBDC3ECBBE049EAA4057D3A /* PostChannelDonationRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostChannelDonationRequest.swift; sourceTree = "<group>"; };
|
||||||
0EC05859619BDC03056911E7 /* MainTab.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MainTab.swift; sourceTree = "<group>"; };
|
0EC05859619BDC03056911E7 /* MainTab.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MainTab.swift; sourceTree = "<group>"; };
|
||||||
@@ -3039,6 +3034,9 @@
|
|||||||
A4F100000000000000000006 /* LottieRefreshableScrollView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LottieRefreshableScrollView.swift; sourceTree = "<group>"; };
|
A4F100000000000000000006 /* LottieRefreshableScrollView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LottieRefreshableScrollView.swift; sourceTree = "<group>"; };
|
||||||
A575789542808C0C87AC6D82 /* AiCharacterCard.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AiCharacterCard.swift; sourceTree = "<group>"; };
|
A575789542808C0C87AC6D82 /* AiCharacterCard.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AiCharacterCard.swift; sourceTree = "<group>"; };
|
||||||
AB63E7E31B75FF2E6F1C9073 /* LanguageSettingsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LanguageSettingsView.swift; sourceTree = "<group>"; };
|
AB63E7E31B75FF2E6F1C9073 /* LanguageSettingsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LanguageSettingsView.swift; sourceTree = "<group>"; };
|
||||||
|
AC5100003012000000A5BBA3 /* AuthContentSettingsSheet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AuthContentSettingsSheet.swift; sourceTree = "<group>"; };
|
||||||
|
AC5200003012000000A5BBA3 /* AuthVerificationView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AuthVerificationView.swift; sourceTree = "<group>"; };
|
||||||
|
AC5200033012000000A5BBA3 /* AuthVerificationMock.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AuthVerificationMock.swift; sourceTree = "<group>"; };
|
||||||
B108032F3DC7110CBFD04130 /* Pods-SodaLive-dev.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SodaLive-dev.release.xcconfig"; path = "Target Support Files/Pods-SodaLive-dev/Pods-SodaLive-dev.release.xcconfig"; sourceTree = "<group>"; };
|
B108032F3DC7110CBFD04130 /* Pods-SodaLive-dev.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SodaLive-dev.release.xcconfig"; path = "Target Support Files/Pods-SodaLive-dev/Pods-SodaLive-dev.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
B54EBFBCC66E5AC79197E1FC /* GetPushNotificationCategoryResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetPushNotificationCategoryResponse.swift; sourceTree = "<group>"; };
|
B54EBFBCC66E5AC79197E1FC /* GetPushNotificationCategoryResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetPushNotificationCategoryResponse.swift; sourceTree = "<group>"; };
|
||||||
B7406AE69F7667FAA2E6DD23 /* CreatorDetailDialogView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CreatorDetailDialogView.swift; sourceTree = "<group>"; };
|
B7406AE69F7667FAA2E6DD23 /* CreatorDetailDialogView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CreatorDetailDialogView.swift; sourceTree = "<group>"; };
|
||||||
@@ -3221,7 +3219,6 @@
|
|||||||
E92246F5C1254CBED72AD9AD /* AudioContentCard.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AudioContentCard.swift; sourceTree = "<group>"; };
|
E92246F5C1254CBED72AD9AD /* AudioContentCard.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AudioContentCard.swift; sourceTree = "<group>"; };
|
||||||
EDB71B1A61924B10599005FE /* CreatorChannelFanTalkCountBar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CreatorChannelFanTalkCountBar.swift; sourceTree = "<group>"; };
|
EDB71B1A61924B10599005FE /* CreatorChannelFanTalkCountBar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CreatorChannelFanTalkCountBar.swift; sourceTree = "<group>"; };
|
||||||
EF47BCA4DC51200D63D1E2D7 /* CreatorChannelFanTalkRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CreatorChannelFanTalkRepository.swift; sourceTree = "<group>"; };
|
EF47BCA4DC51200D63D1E2D7 /* CreatorChannelFanTalkRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CreatorChannelFanTalkRepository.swift; sourceTree = "<group>"; };
|
||||||
F064EC9D5711B91979F45C05 /* YandexAdSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = YandexAdSupport.swift; sourceTree = "<group>"; };
|
|
||||||
F23D0834690CFE9FBDC10510 /* GetPushNotificationListResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetPushNotificationListResponse.swift; sourceTree = "<group>"; };
|
F23D0834690CFE9FBDC10510 /* GetPushNotificationListResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetPushNotificationListResponse.swift; sourceTree = "<group>"; };
|
||||||
F26CB443DA0ED4C45A18B258 /* PushNotificationApi.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PushNotificationApi.swift; sourceTree = "<group>"; };
|
F26CB443DA0ED4C45A18B258 /* PushNotificationApi.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PushNotificationApi.swift; sourceTree = "<group>"; };
|
||||||
F6966E927CDB1DE31F936757 /* CreatorProfileGrid.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CreatorProfileGrid.swift; sourceTree = "<group>"; };
|
F6966E927CDB1DE31F936757 /* CreatorProfileGrid.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CreatorProfileGrid.swift; sourceTree = "<group>"; };
|
||||||
@@ -3229,7 +3226,11 @@
|
|||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFileSystemSynchronizedRootGroup section */
|
/* Begin PBXFileSystemSynchronizedRootGroup section */
|
||||||
401A3B942FEE61E000A5BBA3 /* docs */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = docs; sourceTree = "<group>"; };
|
401A3B942FEE61E000A5BBA3 /* docs */ = {
|
||||||
|
isa = PBXFileSystemSynchronizedRootGroup;
|
||||||
|
path = docs;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
/* End PBXFileSystemSynchronizedRootGroup section */
|
/* End PBXFileSystemSynchronizedRootGroup section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@@ -4688,7 +4689,6 @@
|
|||||||
4091446A2A86228E00EEBFB1 /* ActivityViewController.swift */,
|
4091446A2A86228E00EEBFB1 /* ActivityViewController.swift */,
|
||||||
375C41DF9D62AF5B9C3C1FAC /* DateParser.swift */,
|
375C41DF9D62AF5B9C3C1FAC /* DateParser.swift */,
|
||||||
6DC033E531A9420363D017CE /* FollowButtonImageAsset.swift */,
|
6DC033E531A9420363D017CE /* FollowButtonImageAsset.swift */,
|
||||||
F064EC9D5711B91979F45C05 /* YandexAdSupport.swift */,
|
|
||||||
);
|
);
|
||||||
path = Common;
|
path = Common;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -5900,6 +5900,14 @@
|
|||||||
path = FanTalk;
|
path = FanTalk;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
AC5200063012000000A5BBA3 /* Auth */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
AC5200033012000000A5BBA3 /* AuthVerificationMock.swift */,
|
||||||
|
);
|
||||||
|
path = Auth;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
B068C16B9D7F3F80901622E8 /* Button */ = {
|
B068C16B9D7F3F80901622E8 /* Button */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -6651,14 +6659,6 @@
|
|||||||
path = V2;
|
path = V2;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
AC5200063012000000A5BBA3 /* Auth */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
AC5200033012000000A5BBA3 /* AuthVerificationMock.swift */,
|
|
||||||
);
|
|
||||||
path = Auth;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
F4F9FC33C494BBFD8CE96749 /* Models */ = {
|
F4F9FC33C494BBFD8CE96749 /* Models */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -6680,7 +6680,6 @@
|
|||||||
40FE0E822A8361DF00252293 /* Resources */,
|
40FE0E822A8361DF00252293 /* Resources */,
|
||||||
4055B6312CB4194C006F3D2F /* ShellScript */,
|
4055B6312CB4194C006F3D2F /* ShellScript */,
|
||||||
3B82B11E22594A438A9B51EF /* [CP] Embed Pods Frameworks */,
|
3B82B11E22594A438A9B51EF /* [CP] Embed Pods Frameworks */,
|
||||||
4A01C38173CBB0A3DAC22027 /* [CP] Copy Pods Resources */,
|
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@@ -6724,7 +6723,6 @@
|
|||||||
40FE0EA22A8362A200252293 /* Frameworks */,
|
40FE0EA22A8362A200252293 /* Frameworks */,
|
||||||
40FE0EA32A8362A200252293 /* Resources */,
|
40FE0EA32A8362A200252293 /* Resources */,
|
||||||
28183D46159D813CE54C976C /* [CP] Embed Pods Frameworks */,
|
28183D46159D813CE54C976C /* [CP] Embed Pods Frameworks */,
|
||||||
A693F0C20976651410F54E89 /* [CP] Copy Pods Resources */,
|
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@@ -6775,7 +6773,6 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
buildConfigurationList = 40FE0E7F2A8361DF00252293 /* Build configuration list for PBXProject "SodaLive" */;
|
buildConfigurationList = 40FE0E7F2A8361DF00252293 /* Build configuration list for PBXProject "SodaLive" */;
|
||||||
compatibilityVersion = "Xcode 14.0";
|
|
||||||
developmentRegion = ko;
|
developmentRegion = ko;
|
||||||
hasScannedForEncodings = 0;
|
hasScannedForEncodings = 0;
|
||||||
knownRegions = (
|
knownRegions = (
|
||||||
@@ -6804,6 +6801,7 @@
|
|||||||
7D0E5FAF7AD538D1C2FED682 /* XCRemoteSwiftPackageReference "line-sdk-ios-swift" */,
|
7D0E5FAF7AD538D1C2FED682 /* XCRemoteSwiftPackageReference "line-sdk-ios-swift" */,
|
||||||
405EC8B9303D97F30037B269 /* XCRemoteSwiftPackageReference "lottie-spm" */,
|
405EC8B9303D97F30037B269 /* XCRemoteSwiftPackageReference "lottie-spm" */,
|
||||||
);
|
);
|
||||||
|
preferredProjectObjectVersion = 77;
|
||||||
productRefGroup = 40FE0E852A8361DF00252293 /* Products */;
|
productRefGroup = 40FE0E852A8361DF00252293 /* Products */;
|
||||||
projectDirPath = "";
|
projectDirPath = "";
|
||||||
projectRoot = "";
|
projectRoot = "";
|
||||||
@@ -6952,48 +6950,6 @@
|
|||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "# Type a script or drag a script file from your workspace to insert its path.\n\"${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run\"\n";
|
shellScript = "# Type a script or drag a script file from your workspace to insert its path.\n\"${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run\"\n";
|
||||||
};
|
};
|
||||||
4A01C38173CBB0A3DAC22027 /* [CP] Copy Pods Resources */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputFileListPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-SodaLive/Pods-SodaLive-resources-${CONFIGURATION}-input-files.xcfilelist",
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
);
|
|
||||||
name = "[CP] Copy Pods Resources";
|
|
||||||
outputFileListPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-SodaLive/Pods-SodaLive-resources-${CONFIGURATION}-output-files.xcfilelist",
|
|
||||||
);
|
|
||||||
outputPaths = (
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SodaLive/Pods-SodaLive-resources.sh\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
A693F0C20976651410F54E89 /* [CP] Copy Pods Resources */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputFileListPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-SodaLive-dev/Pods-SodaLive-dev-resources-${CONFIGURATION}-input-files.xcfilelist",
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
);
|
|
||||||
name = "[CP] Copy Pods Resources";
|
|
||||||
outputFileListPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-SodaLive-dev/Pods-SodaLive-dev-resources-${CONFIGURATION}-output-files.xcfilelist",
|
|
||||||
);
|
|
||||||
outputPaths = (
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SodaLive-dev/Pods-SodaLive-dev-resources.sh\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
FAC97E5C197D279B3EE15B05 /* [CP] Check Pods Manifest.lock */ = {
|
FAC97E5C197D279B3EE15B05 /* [CP] Check Pods Manifest.lock */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@@ -7940,7 +7896,6 @@
|
|||||||
70E2CE7366BDBAC59BB39B41 /* AppDeepLinkHandler.swift in Sources */,
|
70E2CE7366BDBAC59BB39B41 /* AppDeepLinkHandler.swift in Sources */,
|
||||||
2B35B93B2F7253CADBC12A82 /* DateParser.swift in Sources */,
|
2B35B93B2F7253CADBC12A82 /* DateParser.swift in Sources */,
|
||||||
A3BDD0D3E14CD72B022AF6A7 /* FollowButtonImageAsset.swift in Sources */,
|
A3BDD0D3E14CD72B022AF6A7 /* FollowButtonImageAsset.swift in Sources */,
|
||||||
C45F071870A4DB48ABAE8BC5 /* YandexAdSupport.swift in Sources */,
|
|
||||||
FE3244627FFAD8667541CE01 /* ChannelDonationAllView.swift in Sources */,
|
FE3244627FFAD8667541CE01 /* ChannelDonationAllView.swift in Sources */,
|
||||||
843C3C5366C9D9DEE37878BF /* ChannelDonationItemView.swift in Sources */,
|
843C3C5366C9D9DEE37878BF /* ChannelDonationItemView.swift in Sources */,
|
||||||
53E20A90F5D084820C7166E2 /* ChannelDonationViewModel.swift in Sources */,
|
53E20A90F5D084820C7166E2 /* ChannelDonationViewModel.swift in Sources */,
|
||||||
@@ -8881,7 +8836,6 @@
|
|||||||
560889894E241FA549958716 /* AppDeepLinkHandler.swift in Sources */,
|
560889894E241FA549958716 /* AppDeepLinkHandler.swift in Sources */,
|
||||||
4A951EA6E07524A0B650F4BF /* DateParser.swift in Sources */,
|
4A951EA6E07524A0B650F4BF /* DateParser.swift in Sources */,
|
||||||
F8DB0226F6F44A7DBEF8B4CF /* FollowButtonImageAsset.swift in Sources */,
|
F8DB0226F6F44A7DBEF8B4CF /* FollowButtonImageAsset.swift in Sources */,
|
||||||
89AF41E6A46CD84BA469F272 /* YandexAdSupport.swift in Sources */,
|
|
||||||
E2C133B589E2DA7596B3BAEF /* ChannelDonationAllView.swift in Sources */,
|
E2C133B589E2DA7596B3BAEF /* ChannelDonationAllView.swift in Sources */,
|
||||||
F0F1F71CCA586A0CF5194FAB /* ChannelDonationItemView.swift in Sources */,
|
F0F1F71CCA586A0CF5194FAB /* ChannelDonationItemView.swift in Sources */,
|
||||||
0470E68C6F302A131264E3AF /* ChannelDonationViewModel.swift in Sources */,
|
0470E68C6F302A131264E3AF /* ChannelDonationViewModel.swift in Sources */,
|
||||||
@@ -9366,7 +9320,6 @@
|
|||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 959B90DBB4BB5911AB10C442 /* Pods-SodaLive-dev.debug.xcconfig */;
|
baseConfigurationReference = 959B90DBB4BB5911AB10C442 /* Pods-SodaLive-dev.debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) AUTH_VERIFICATION_MOCK";
|
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
CODE_SIGN_ENTITLEMENTS = "SodaLive-dev.entitlements";
|
CODE_SIGN_ENTITLEMENTS = "SodaLive-dev.entitlements";
|
||||||
@@ -9397,6 +9350,7 @@
|
|||||||
PRODUCT_BUNDLE_IDENTIFIER = kr.co.vividnext.sodalive.debug2;
|
PRODUCT_BUNDLE_IDENTIFIER = kr.co.vividnext.sodalive.debug2;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) AUTH_VERIFICATION_MOCK";
|
||||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = 1;
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
@@ -9407,7 +9361,6 @@
|
|||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = B108032F3DC7110CBFD04130 /* Pods-SodaLive-dev.release.xcconfig */;
|
baseConfigurationReference = B108032F3DC7110CBFD04130 /* Pods-SodaLive-dev.release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) AUTH_VERIFICATION_MOCK";
|
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
CODE_SIGN_ENTITLEMENTS = "SodaLive-dev.entitlements";
|
CODE_SIGN_ENTITLEMENTS = "SodaLive-dev.entitlements";
|
||||||
@@ -9438,6 +9391,7 @@
|
|||||||
PRODUCT_BUNDLE_IDENTIFIER = kr.co.vividnext.sodalive.debug2;
|
PRODUCT_BUNDLE_IDENTIFIER = kr.co.vividnext.sodalive.debug2;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) AUTH_VERIFICATION_MOCK";
|
||||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = 1;
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import FirebaseCore
|
|||||||
import FirebaseAnalytics
|
import FirebaseAnalytics
|
||||||
import FirebaseMessaging
|
import FirebaseMessaging
|
||||||
import LineSDK
|
import LineSDK
|
||||||
import YandexMobileAds
|
|
||||||
|
|
||||||
class AppDelegate: UIResponder, UIApplicationDelegate {
|
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||||
|
|
||||||
@@ -33,9 +32,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
|||||||
Messaging.messaging().delegate = self
|
Messaging.messaging().delegate = self
|
||||||
setupAppsFlyer()
|
setupAppsFlyer()
|
||||||
|
|
||||||
// YandexAds 초기화
|
|
||||||
YandexAds.initializeSDK(completionHandler: nil)
|
|
||||||
|
|
||||||
// For iOS 10 display notification (sent via APNS)
|
// For iOS 10 display notification (sent via APNS)
|
||||||
UNUserNotificationCenter.current().delegate = self
|
UNUserNotificationCenter.current().delegate = self
|
||||||
|
|
||||||
|
|||||||
@@ -36,11 +36,6 @@ struct CharacterView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
YandexInlineBannerView(
|
|
||||||
placement: .chatCharacterList,
|
|
||||||
horizontalPadding: 24
|
|
||||||
)
|
|
||||||
.padding(.vertical, -24)
|
|
||||||
|
|
||||||
// 인기 캐릭터 섹션
|
// 인기 캐릭터 섹션
|
||||||
if !viewModel.popularCharacters.isEmpty {
|
if !viewModel.popularCharacters.isEmpty {
|
||||||
|
|||||||
@@ -22,10 +22,6 @@ struct OriginalTabView: View {
|
|||||||
|
|
||||||
ScrollView(.vertical, showsIndicators: false) {
|
ScrollView(.vertical, showsIndicators: false) {
|
||||||
VStack(spacing: 12) {
|
VStack(spacing: 12) {
|
||||||
YandexInlineBannerView(
|
|
||||||
placement: .chatOriginalTabTop,
|
|
||||||
horizontalPadding: horizontalPadding
|
|
||||||
)
|
|
||||||
|
|
||||||
LazyVGrid(
|
LazyVGrid(
|
||||||
columns: Array(
|
columns: Array(
|
||||||
|
|||||||
@@ -277,21 +277,6 @@ final class ChatRoomViewModel: ObservableObject {
|
|||||||
purchaseChatQuota(chargeType: .can, canOption: canOption)
|
purchaseChatQuota(chargeType: .can, canOption: canOption)
|
||||||
}
|
}
|
||||||
|
|
||||||
func showRewardedAdForChatQuota() {
|
|
||||||
_Concurrency.Task {
|
|
||||||
let isShown = await YandexRewardedAdManager.shared.showAdIfAvailable(for: .chatRoomQuota) { [weak self] in
|
|
||||||
self?.purchaseChatQuota(chargeType: .ad, canOption: nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !isShown {
|
|
||||||
await MainActor.run {
|
|
||||||
errorMessage = I18n.Chat.Room.rewardedAdLoadFailed
|
|
||||||
isShowPopup = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private func purchaseChatQuota(
|
private func purchaseChatQuota(
|
||||||
chargeType: ChatRoomQuotaChargeType,
|
chargeType: ChatRoomQuotaChargeType,
|
||||||
canOption: ChatRoomQuotaCanOption?
|
canOption: ChatRoomQuotaCanOption?
|
||||||
@@ -467,15 +452,6 @@ final class ChatRoomViewModel: ObservableObject {
|
|||||||
private func updateQuota(totalRemaining: Int) {
|
private func updateQuota(totalRemaining: Int) {
|
||||||
self.totalRemaining = totalRemaining
|
self.totalRemaining = totalRemaining
|
||||||
showQuotaNoticeView = totalRemaining <= 0
|
showQuotaNoticeView = totalRemaining <= 0
|
||||||
prepareRewardedAdIfNeeded(totalRemaining: totalRemaining)
|
|
||||||
}
|
|
||||||
|
|
||||||
private func prepareRewardedAdIfNeeded(totalRemaining: Int) {
|
|
||||||
guard totalRemaining <= 1 else { return }
|
|
||||||
|
|
||||||
_Concurrency.Task {
|
|
||||||
await YandexRewardedAdManager.shared.preloadAd(for: .chatRoomQuota)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private func getSavedBackgroundImageId() -> Int? {
|
private func getSavedBackgroundImageId() -> Int? {
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ struct ChatQuotaPurchaseRequest: Encodable {
|
|||||||
|
|
||||||
enum ChatRoomQuotaChargeType: String, Encodable {
|
enum ChatRoomQuotaChargeType: String, Encodable {
|
||||||
case can = "CAN"
|
case can = "CAN"
|
||||||
case ad = "AD"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enum ChatRoomQuotaCanOption: String, Encodable {
|
enum ChatRoomQuotaCanOption: String, Encodable {
|
||||||
|
|||||||
@@ -15,10 +15,6 @@ struct TalkView: View {
|
|||||||
BaseView(isLoading: $viewModel.isLoading) {
|
BaseView(isLoading: $viewModel.isLoading) {
|
||||||
ScrollView(.vertical, showsIndicators: false) {
|
ScrollView(.vertical, showsIndicators: false) {
|
||||||
LazyVStack(spacing: 24) {
|
LazyVStack(spacing: 24) {
|
||||||
YandexInlineBannerView(
|
|
||||||
placement: .chatTalkTabTop,
|
|
||||||
horizontalPadding: 24
|
|
||||||
)
|
|
||||||
|
|
||||||
if viewModel.talkRooms.isEmpty {
|
if viewModel.talkRooms.isEmpty {
|
||||||
Text(I18n.Chat.Talk.emptyMessage)
|
Text(I18n.Chat.Talk.emptyMessage)
|
||||||
|
|||||||
@@ -1,316 +0,0 @@
|
|||||||
//
|
|
||||||
// YandexAdSupport.swift
|
|
||||||
// SodaLive
|
|
||||||
//
|
|
||||||
// Created by OpenCode on 2026/04/28.
|
|
||||||
//
|
|
||||||
|
|
||||||
import SwiftUI
|
|
||||||
import YandexMobileAds
|
|
||||||
|
|
||||||
enum YandexBannerPlacement {
|
|
||||||
case liveTab
|
|
||||||
case liveDetail
|
|
||||||
case creatorCommunityAll
|
|
||||||
case seriesMainHome
|
|
||||||
case seriesMainDayOfWeek
|
|
||||||
case seriesMainByGenre
|
|
||||||
case pushNotificationList
|
|
||||||
case notificationReceiveSettings
|
|
||||||
case chatCharacterList
|
|
||||||
case chatOriginalTabTop
|
|
||||||
case chatTalkTabTop
|
|
||||||
}
|
|
||||||
|
|
||||||
enum YandexRewardedPlacement {
|
|
||||||
case chatRoomQuota
|
|
||||||
}
|
|
||||||
|
|
||||||
enum YandexAdUnitIdProvider {
|
|
||||||
|
|
||||||
static func banner(for placement: YandexBannerPlacement) -> String {
|
|
||||||
switch placement {
|
|
||||||
case .liveTab:
|
|
||||||
YANDEX_LIVE_TAB_BANNER_AD_UNIT_ID
|
|
||||||
case .liveDetail:
|
|
||||||
YANDEX_LIVE_DETAIL_BANNER_AD_UNIT_ID
|
|
||||||
case .creatorCommunityAll:
|
|
||||||
YANDEX_CREATOR_COMMUNITY_ALL_BANNER_AD_UNIT_ID
|
|
||||||
case .seriesMainHome:
|
|
||||||
YANDEX_SERIES_MAIN_HOME_BANNER_AD_UNIT_ID
|
|
||||||
case .seriesMainDayOfWeek:
|
|
||||||
YANDEX_SERIES_MAIN_DAY_OF_WEEK_BANNER_AD_UNIT_ID
|
|
||||||
case .seriesMainByGenre:
|
|
||||||
YANDEX_SERIES_MAIN_BY_GENRE_BANNER_AD_UNIT_ID
|
|
||||||
case .pushNotificationList:
|
|
||||||
YANDEX_PUSH_NOTIFICATION_LIST_BANNER_AD_UNIT_ID
|
|
||||||
case .notificationReceiveSettings:
|
|
||||||
YANDEX_NOTIFICATION_RECEIVE_SETTINGS_BANNER_AD_UNIT_ID
|
|
||||||
case .chatCharacterList:
|
|
||||||
YANDEX_CHAT_CHARACTER_LIST_BANNER_AD_UNIT_ID
|
|
||||||
case .chatOriginalTabTop:
|
|
||||||
YANDEX_CHAT_ORIGINAL_TAB_TOP_BANNER_AD_UNIT_ID
|
|
||||||
case .chatTalkTabTop:
|
|
||||||
YANDEX_CHAT_TALK_TAB_TOP_BANNER_AD_UNIT_ID
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static func rewarded(for placement: YandexRewardedPlacement) -> String {
|
|
||||||
switch placement {
|
|
||||||
case .chatRoomQuota:
|
|
||||||
YANDEX_CHAT_ROOM_QUOTA_REWARDED_AD_UNIT_ID
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct YandexInlineBannerView: View {
|
|
||||||
|
|
||||||
let placement: YandexBannerPlacement
|
|
||||||
|
|
||||||
var maxHeight: CGFloat = 90
|
|
||||||
var horizontalPadding: CGFloat = 13.3
|
|
||||||
|
|
||||||
@State private var bannerHeight: CGFloat = 0
|
|
||||||
@State private var isLoadFailed = true
|
|
||||||
|
|
||||||
var body: some View {
|
|
||||||
GeometryReader { proxy in
|
|
||||||
let width = max(proxy.size.width - (horizontalPadding * 2), 1)
|
|
||||||
let resolvedHeight = isLoadFailed ? 0 : (bannerHeight > 0 ? bannerHeight : maxHeight)
|
|
||||||
|
|
||||||
YandexInlineBannerContainer(
|
|
||||||
placement: placement,
|
|
||||||
width: width,
|
|
||||||
maxHeight: maxHeight,
|
|
||||||
bannerHeight: $bannerHeight,
|
|
||||||
isLoadFailed: $isLoadFailed
|
|
||||||
)
|
|
||||||
.frame(width: width, height: resolvedHeight)
|
|
||||||
.padding(.horizontal, horizontalPadding)
|
|
||||||
}
|
|
||||||
.frame(height: isLoadFailed ? 0 : (bannerHeight > 0 ? bannerHeight : maxHeight))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private struct YandexInlineBannerContainer: UIViewRepresentable {
|
|
||||||
|
|
||||||
let placement: YandexBannerPlacement
|
|
||||||
|
|
||||||
let width: CGFloat
|
|
||||||
let maxHeight: CGFloat
|
|
||||||
|
|
||||||
@Binding var bannerHeight: CGFloat
|
|
||||||
@Binding var isLoadFailed: Bool
|
|
||||||
|
|
||||||
func makeCoordinator() -> Coordinator {
|
|
||||||
Coordinator(parent: self)
|
|
||||||
}
|
|
||||||
|
|
||||||
func makeUIView(context: Context) -> UIView {
|
|
||||||
let view = UIView()
|
|
||||||
view.backgroundColor = .clear
|
|
||||||
return view
|
|
||||||
}
|
|
||||||
|
|
||||||
func updateUIView(_ uiView: UIView, context: Context) {
|
|
||||||
context.coordinator.parent = self
|
|
||||||
context.coordinator.configureIfNeeded(containerView: uiView)
|
|
||||||
}
|
|
||||||
|
|
||||||
final class Coordinator: NSObject, BannerAdViewDelegate {
|
|
||||||
|
|
||||||
var parent: YandexInlineBannerContainer
|
|
||||||
private weak var containerView: UIView?
|
|
||||||
private var bannerAdView: BannerAdView?
|
|
||||||
private var currentWidth: CGFloat = 0
|
|
||||||
|
|
||||||
init(parent: YandexInlineBannerContainer) {
|
|
||||||
self.parent = parent
|
|
||||||
}
|
|
||||||
|
|
||||||
func configureIfNeeded(containerView: UIView) {
|
|
||||||
self.containerView = containerView
|
|
||||||
|
|
||||||
let roundedWidth = parent.width.rounded(.down)
|
|
||||||
|
|
||||||
guard bannerAdView == nil || abs(currentWidth - roundedWidth) > 0.5 else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
currentWidth = roundedWidth
|
|
||||||
|
|
||||||
DispatchQueue.main.async {
|
|
||||||
self.parent.bannerHeight = 0
|
|
||||||
self.parent.isLoadFailed = false
|
|
||||||
}
|
|
||||||
|
|
||||||
bannerAdView?.removeFromSuperview()
|
|
||||||
|
|
||||||
let adSize = BannerAdSize.inline(width: roundedWidth, maxHeight: parent.maxHeight)
|
|
||||||
let bannerAdView = BannerAdView(adSize: adSize)
|
|
||||||
bannerAdView.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
bannerAdView.delegate = self
|
|
||||||
|
|
||||||
containerView.addSubview(bannerAdView)
|
|
||||||
|
|
||||||
NSLayoutConstraint.activate([
|
|
||||||
bannerAdView.topAnchor.constraint(equalTo: containerView.topAnchor),
|
|
||||||
bannerAdView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor),
|
|
||||||
bannerAdView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor),
|
|
||||||
bannerAdView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor)
|
|
||||||
])
|
|
||||||
|
|
||||||
self.bannerAdView = bannerAdView
|
|
||||||
bannerAdView.loadAd(with: AdRequest(adUnitID: YandexAdUnitIdProvider.banner(for: parent.placement)))
|
|
||||||
}
|
|
||||||
|
|
||||||
func bannerAdViewDidLoad(_ adView: BannerAdView) {
|
|
||||||
adView.layoutIfNeeded()
|
|
||||||
|
|
||||||
let measuredHeight = adView.bounds.height > 0 ? adView.bounds.height : parent.maxHeight
|
|
||||||
|
|
||||||
DispatchQueue.main.async {
|
|
||||||
self.parent.bannerHeight = measuredHeight
|
|
||||||
self.parent.isLoadFailed = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func bannerAdViewDidFailLoading(_ adView: BannerAdView, error: Error) {
|
|
||||||
DispatchQueue.main.async {
|
|
||||||
self.parent.bannerHeight = 0
|
|
||||||
self.parent.isLoadFailed = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func bannerAdViewDidClick(_ adView: BannerAdView) {
|
|
||||||
}
|
|
||||||
|
|
||||||
func bannerAdView(_ adView: BannerAdView, didTrackImpression impressionData: ImpressionData?) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@MainActor
|
|
||||||
final class YandexRewardedAdManager: NSObject {
|
|
||||||
|
|
||||||
static let shared = YandexRewardedAdManager()
|
|
||||||
|
|
||||||
private var rewardedAd: RewardedAd?
|
|
||||||
private var rewardedAdLoader: RewardedAdLoader?
|
|
||||||
private var currentPlacement: YandexRewardedPlacement?
|
|
||||||
private var pendingRewardAction: (@MainActor () -> Void)?
|
|
||||||
private var rewardedPlacement: YandexRewardedPlacement?
|
|
||||||
private var isLoading = false
|
|
||||||
|
|
||||||
func preloadAd(for placement: YandexRewardedPlacement) {
|
|
||||||
guard !isLoading else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if currentPlacement == placement, rewardedAd != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
let loader = RewardedAdLoader()
|
|
||||||
rewardedAdLoader = loader
|
|
||||||
rewardedAd = nil
|
|
||||||
currentPlacement = placement
|
|
||||||
isLoading = true
|
|
||||||
|
|
||||||
Task {
|
|
||||||
do {
|
|
||||||
let loadedAd = try await loader.loadAd(with: AdRequest(adUnitID: YandexAdUnitIdProvider.rewarded(for: placement)))
|
|
||||||
guard currentPlacement == placement else {
|
|
||||||
isLoading = false
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
loadedAd.delegate = self
|
|
||||||
rewardedAd = loadedAd
|
|
||||||
} catch {
|
|
||||||
if currentPlacement == placement {
|
|
||||||
rewardedAd = nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if currentPlacement == placement {
|
|
||||||
isLoading = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func showAdIfAvailable(for placement: YandexRewardedPlacement, onReward: @escaping @MainActor () -> Void) -> Bool {
|
|
||||||
guard let presenter = presentingViewController(), let rewardedAd, currentPlacement == placement else {
|
|
||||||
preloadAd(for: placement)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
pendingRewardAction = onReward
|
|
||||||
rewardedPlacement = placement
|
|
||||||
rewardedAd.show(from: presenter)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
private func completeRewardIfNeeded() {
|
|
||||||
let action = pendingRewardAction
|
|
||||||
pendingRewardAction = nil
|
|
||||||
action?()
|
|
||||||
}
|
|
||||||
|
|
||||||
private func resetAndPreload() {
|
|
||||||
pendingRewardAction = nil
|
|
||||||
rewardedAd = nil
|
|
||||||
|
|
||||||
if let rewardedPlacement {
|
|
||||||
self.rewardedPlacement = nil
|
|
||||||
preloadAd(for: rewardedPlacement)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private func presentingViewController() -> UIViewController? {
|
|
||||||
guard
|
|
||||||
let rootViewController = UIApplication.shared.connectedScenes
|
|
||||||
.compactMap({ $0 as? UIWindowScene })
|
|
||||||
.flatMap({ $0.windows })
|
|
||||||
.first(where: { $0.isKeyWindow })?
|
|
||||||
.rootViewController
|
|
||||||
else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var topViewController = rootViewController
|
|
||||||
|
|
||||||
while let presentedViewController = topViewController.presentedViewController {
|
|
||||||
topViewController = presentedViewController
|
|
||||||
}
|
|
||||||
|
|
||||||
return topViewController
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
extension YandexRewardedAdManager: RewardedAdDelegate {
|
|
||||||
|
|
||||||
func rewardedAd(_ rewardedAd: RewardedAd, didReward reward: Reward) {
|
|
||||||
DEBUG_LOG("리워드 광고 보상 받기 성공")
|
|
||||||
completeRewardIfNeeded()
|
|
||||||
}
|
|
||||||
|
|
||||||
func rewardedAd(_ rewardedAd: RewardedAd, didFailToShow error: Error) {
|
|
||||||
DEBUG_LOG("리워드 광고 에러")
|
|
||||||
resetAndPreload()
|
|
||||||
}
|
|
||||||
|
|
||||||
func rewardedAdDidShow(_ rewardedAd: RewardedAd) {
|
|
||||||
}
|
|
||||||
|
|
||||||
func rewardedAdDidDismiss(_ rewardedAd: RewardedAd) {
|
|
||||||
DEBUG_LOG("리워드 광고 닫기")
|
|
||||||
resetAndPreload()
|
|
||||||
}
|
|
||||||
|
|
||||||
func rewardedAdDidClick(_ rewardedAd: RewardedAd) {
|
|
||||||
}
|
|
||||||
|
|
||||||
func rewardedAd(_ rewardedAd: RewardedAd, didTrackImpression impressionData: ImpressionData?) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -29,9 +29,6 @@ struct SeriesMainByGenreView: View {
|
|||||||
let width = (screenSize().width - (horizontalPadding * 2) - gridSpacing) / 2
|
let width = (screenSize().width - (horizontalPadding * 2) - gridSpacing) / 2
|
||||||
|
|
||||||
VStack(spacing: 16) {
|
VStack(spacing: 16) {
|
||||||
if !viewModel.genreList.isEmpty {
|
|
||||||
YandexInlineBannerView(placement: .seriesMainByGenre, horizontalPadding: 24)
|
|
||||||
}
|
|
||||||
|
|
||||||
LazyVGrid(
|
LazyVGrid(
|
||||||
columns: Array(
|
columns: Array(
|
||||||
|
|||||||
@@ -62,7 +62,6 @@ struct SeriesMainDayOfWeekView: View {
|
|||||||
let width = (screenSize().width - (horizontalPadding * 2) - gridSpacing) / 2
|
let width = (screenSize().width - (horizontalPadding * 2) - gridSpacing) / 2
|
||||||
|
|
||||||
VStack(spacing: 16) {
|
VStack(spacing: 16) {
|
||||||
YandexInlineBannerView(placement: .seriesMainDayOfWeek, horizontalPadding: 24)
|
|
||||||
|
|
||||||
LazyVGrid(
|
LazyVGrid(
|
||||||
columns: Array(
|
columns: Array(
|
||||||
|
|||||||
@@ -55,7 +55,6 @@ struct SeriesMainHomeView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
YandexInlineBannerView(placement: .seriesMainHome, horizontalPadding: 24)
|
|
||||||
|
|
||||||
if !viewModel.recommendSeriesList.isEmpty {
|
if !viewModel.recommendSeriesList.isEmpty {
|
||||||
VStack(alignment: .leading, spacing: 16) {
|
VStack(alignment: .leading, spacing: 16) {
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ let BASE_URL = "https://test-api.sodalive.net"
|
|||||||
let APPLY_SODALIVE_CREATOR = "https://forms.gle/mmhJKmijjVRnwtdZ7"
|
let APPLY_SODALIVE_CREATOR = "https://forms.gle/mmhJKmijjVRnwtdZ7"
|
||||||
|
|
||||||
let AGORA_APP_ID = "b96574e191a9430fa54c605528aa3ef7"
|
let AGORA_APP_ID = "b96574e191a9430fa54c605528aa3ef7"
|
||||||
let AGORA_APP_CERTIFICATE = "ae18ade3afcf4086bd4397726eb0654c"
|
|
||||||
|
|
||||||
let BOOTPAY_APP_ID = "6242a7772701800023f68b2f"
|
let BOOTPAY_APP_ID = "6242a7772701800023f68b2f"
|
||||||
let BOOTPAY_APP_HECTO_ID = "667fca5d3bab7404f831c3e5"
|
let BOOTPAY_APP_HECTO_ID = "667fca5d3bab7404f831c3e5"
|
||||||
@@ -32,18 +31,3 @@ let LINE_CHANNEL_ID = "2008995582"
|
|||||||
|
|
||||||
let AGORA_CUSTOMER_ID = "de5dd9ea151f4a43ba1ad8411817b169"
|
let AGORA_CUSTOMER_ID = "de5dd9ea151f4a43ba1ad8411817b169"
|
||||||
let AGORA_CUSTOMER_SECRET = "3855da8bc5ae4743af8bf4f87408b515"
|
let AGORA_CUSTOMER_SECRET = "3855da8bc5ae4743af8bf4f87408b515"
|
||||||
|
|
||||||
let YANDEX_LIVE_TAB_BANNER_AD_UNIT_ID = "R-M-19140297-3"
|
|
||||||
let YANDEX_LIVE_DETAIL_BANNER_AD_UNIT_ID = "R-M-19140297-4"
|
|
||||||
let YANDEX_CONTENT_DETAIL_BANNER_AD_UNIT_ID = "R-M-19140297-5"
|
|
||||||
let YANDEX_CONTENT_DETAIL_INTERSTITIAL_AD_UNIT_ID = "R-M-19140297-6"
|
|
||||||
let YANDEX_CREATOR_COMMUNITY_ALL_BANNER_AD_UNIT_ID = "R-M-19140297-7"
|
|
||||||
let YANDEX_SERIES_MAIN_HOME_BANNER_AD_UNIT_ID = "R-M-19140297-8"
|
|
||||||
let YANDEX_SERIES_MAIN_DAY_OF_WEEK_BANNER_AD_UNIT_ID = "R-M-19140297-9"
|
|
||||||
let YANDEX_SERIES_MAIN_BY_GENRE_BANNER_AD_UNIT_ID = "R-M-19140297-10"
|
|
||||||
let YANDEX_PUSH_NOTIFICATION_LIST_BANNER_AD_UNIT_ID = "R-M-19140297-11"
|
|
||||||
let YANDEX_NOTIFICATION_RECEIVE_SETTINGS_BANNER_AD_UNIT_ID = "R-M-19140297-12"
|
|
||||||
let YANDEX_CHAT_CHARACTER_LIST_BANNER_AD_UNIT_ID = "R-M-19140297-13"
|
|
||||||
let YANDEX_CHAT_ORIGINAL_TAB_TOP_BANNER_AD_UNIT_ID = "R-M-19140297-14"
|
|
||||||
let YANDEX_CHAT_TALK_TAB_TOP_BANNER_AD_UNIT_ID = "R-M-19140297-15"
|
|
||||||
let YANDEX_CHAT_ROOM_QUOTA_REWARDED_AD_UNIT_ID = "R-M-19140297-16"
|
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ struct CreatorCommunityAllView: View {
|
|||||||
|
|
||||||
communityViewTypeTabView
|
communityViewTypeTabView
|
||||||
|
|
||||||
YandexInlineBannerView(placement: .creatorCommunityAll)
|
|
||||||
|
|
||||||
if isGridMode {
|
if isGridMode {
|
||||||
gridContentView
|
gridContentView
|
||||||
|
|||||||
@@ -326,14 +326,6 @@ enum I18n {
|
|||||||
pick(ko: "입력 중", en: "Typing", ja: "入力中")
|
pick(ko: "입력 중", en: "Typing", ja: "入力中")
|
||||||
}
|
}
|
||||||
|
|
||||||
static func quotaAdAction(chatCount: Int) -> String {
|
|
||||||
pick(
|
|
||||||
ko: "광고 / \(chatCount)채팅",
|
|
||||||
en: "Ad / \(chatCount) chats",
|
|
||||||
ja: "広告 / \(chatCount)チャット"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
static func quotaChatCount(_ chatCount: Int) -> String {
|
static func quotaChatCount(_ chatCount: Int) -> String {
|
||||||
pick(
|
pick(
|
||||||
ko: "\(chatCount)채팅",
|
ko: "\(chatCount)채팅",
|
||||||
@@ -342,14 +334,6 @@ enum I18n {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
static var rewardedAdLoadFailed: String {
|
|
||||||
pick(
|
|
||||||
ko: "광고를 불러오지 못했어요\n잠시 후 다시 시도해 주세요.",
|
|
||||||
en: "Could not load the ad.\nPlease try again later.",
|
|
||||||
ja: "広告を読み込めませんでした。\nしばらくしてからもう一度お試しください。"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
static var backgroundSelectionTitle: String {
|
static var backgroundSelectionTitle: String {
|
||||||
pick(ko: "배경 이미지 선택", en: "Select background image", ja: "背景画像を選択")
|
pick(ko: "배경 이미지 선택", en: "Select background image", ja: "背景画像を選択")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,8 +91,6 @@ struct LiveView: View {
|
|||||||
SectionLatestFinishedLiveView(items: viewModel.latestFinishedLiveItems)
|
SectionLatestFinishedLiveView(items: viewModel.latestFinishedLiveItems)
|
||||||
}
|
}
|
||||||
|
|
||||||
YandexInlineBannerView(placement: .liveTab)
|
|
||||||
.padding(.vertical, -24)
|
|
||||||
|
|
||||||
if viewModel.replayLiveItems.count > 0 {
|
if viewModel.replayLiveItems.count > 0 {
|
||||||
LiveReplayListView(contentList: viewModel.replayLiveItems)
|
LiveReplayListView(contentList: viewModel.replayLiveItems)
|
||||||
|
|||||||
@@ -129,9 +129,6 @@ struct LiveDetailView: View {
|
|||||||
.frame(width: proxy.size.width - 26.7)
|
.frame(width: proxy.size.width - 26.7)
|
||||||
}
|
}
|
||||||
|
|
||||||
YandexInlineBannerView(placement: .liveDetail, horizontalPadding: 0)
|
|
||||||
.frame(width: proxy.size.width - 26.7)
|
|
||||||
.padding(.top, 13.3)
|
|
||||||
|
|
||||||
Rectangle()
|
Rectangle()
|
||||||
.frame(height: 1)
|
.frame(height: 1)
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ struct PushNotificationListView: View {
|
|||||||
selectedTheme: $viewModel.selectedCategory
|
selectedTheme: $viewModel.selectedCategory
|
||||||
)
|
)
|
||||||
|
|
||||||
YandexInlineBannerView(placement: .pushNotificationList)
|
|
||||||
|
|
||||||
ScrollView(.vertical, showsIndicators: false) {
|
ScrollView(.vertical, showsIndicators: false) {
|
||||||
LazyVStack(spacing: 0) {
|
LazyVStack(spacing: 0) {
|
||||||
|
|||||||
@@ -158,8 +158,6 @@ struct NotificationReceiveSettingsView: View {
|
|||||||
.padding(.top, 13.3)
|
.padding(.top, 13.3)
|
||||||
.padding(.horizontal, 13.3)
|
.padding(.horizontal, 13.3)
|
||||||
|
|
||||||
YandexInlineBannerView(placement: .notificationReceiveSettings)
|
|
||||||
.padding(.top, 26.7)
|
|
||||||
|
|
||||||
Text(I18n.Settings.Notification.followingChannels)
|
Text(I18n.Settings.Notification.followingChannels)
|
||||||
.appFont(size: 16.7, weight: .bold)
|
.appFont(size: 16.7, weight: .bold)
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ let BASE_URL = "https://api.sodalive.net"
|
|||||||
let APPLY_SODALIVE_CREATOR = "https://forms.gle/mmhJKmijjVRnwtdZ7"
|
let APPLY_SODALIVE_CREATOR = "https://forms.gle/mmhJKmijjVRnwtdZ7"
|
||||||
|
|
||||||
let AGORA_APP_ID = "e34e40046e9847baba3adfe2b8ffb4f6"
|
let AGORA_APP_ID = "e34e40046e9847baba3adfe2b8ffb4f6"
|
||||||
let AGORA_APP_CERTIFICATE = "15cadeea4ba94ff7b091c9a10f4bf4a6"
|
|
||||||
|
|
||||||
let BOOTPAY_APP_ID = "64c35be1d25985001dc50c88"
|
let BOOTPAY_APP_ID = "64c35be1d25985001dc50c88"
|
||||||
let BOOTPAY_APP_HECTO_ID = "664c1707b18b225deca4b42a"
|
let BOOTPAY_APP_HECTO_ID = "664c1707b18b225deca4b42a"
|
||||||
@@ -32,18 +31,3 @@ let LINE_CHANNEL_ID = "2008995539"
|
|||||||
|
|
||||||
let AGORA_CUSTOMER_ID = "de5dd9ea151f4a43ba1ad8411817b169"
|
let AGORA_CUSTOMER_ID = "de5dd9ea151f4a43ba1ad8411817b169"
|
||||||
let AGORA_CUSTOMER_SECRET = "3855da8bc5ae4743af8bf4f87408b515"
|
let AGORA_CUSTOMER_SECRET = "3855da8bc5ae4743af8bf4f87408b515"
|
||||||
|
|
||||||
let YANDEX_LIVE_TAB_BANNER_AD_UNIT_ID = "R-M-19157621-1"
|
|
||||||
let YANDEX_LIVE_DETAIL_BANNER_AD_UNIT_ID = "R-M-19157621-2"
|
|
||||||
let YANDEX_CONTENT_DETAIL_BANNER_AD_UNIT_ID = "R-M-19157621-3"
|
|
||||||
let YANDEX_CONTENT_DETAIL_INTERSTITIAL_AD_UNIT_ID = "R-M-19157621-4"
|
|
||||||
let YANDEX_CREATOR_COMMUNITY_ALL_BANNER_AD_UNIT_ID = "R-M-19157621-5"
|
|
||||||
let YANDEX_SERIES_MAIN_HOME_BANNER_AD_UNIT_ID = "R-M-19157621-6"
|
|
||||||
let YANDEX_SERIES_MAIN_DAY_OF_WEEK_BANNER_AD_UNIT_ID = "R-M-19157621-7"
|
|
||||||
let YANDEX_SERIES_MAIN_BY_GENRE_BANNER_AD_UNIT_ID = "R-M-19157621-8"
|
|
||||||
let YANDEX_PUSH_NOTIFICATION_LIST_BANNER_AD_UNIT_ID = "R-M-19157621-9"
|
|
||||||
let YANDEX_NOTIFICATION_RECEIVE_SETTINGS_BANNER_AD_UNIT_ID = "R-M-19157621-10"
|
|
||||||
let YANDEX_CHAT_CHARACTER_LIST_BANNER_AD_UNIT_ID = "R-M-19157621-11"
|
|
||||||
let YANDEX_CHAT_ORIGINAL_TAB_TOP_BANNER_AD_UNIT_ID = "R-M-19157621-12"
|
|
||||||
let YANDEX_CHAT_TALK_TAB_TOP_BANNER_AD_UNIT_ID = "R-M-19157621-13"
|
|
||||||
let YANDEX_CHAT_ROOM_QUOTA_REWARDED_AD_UNIT_ID = "R-M-19157621-14"
|
|
||||||
|
|||||||
Reference in New Issue
Block a user