激励广告增加统计功能
This commit is contained in:
parent
f890faae4b
commit
cc918f56d9
@ -55,6 +55,8 @@
|
|||||||
035589502F2AEF3700FAEF4A /* FANativeAdManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0355894F2F2AEF3700FAEF4A /* FANativeAdManager.swift */; };
|
035589502F2AEF3700FAEF4A /* FANativeAdManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0355894F2F2AEF3700FAEF4A /* FANativeAdManager.swift */; };
|
||||||
035589542F2AF1CB00FAEF4A /* FATradPlusNativeAd.swift in Sources */ = {isa = PBXBuildFile; fileRef = 035589532F2AF1CB00FAEF4A /* FATradPlusNativeAd.swift */; };
|
035589542F2AF1CB00FAEF4A /* FATradPlusNativeAd.swift in Sources */ = {isa = PBXBuildFile; fileRef = 035589532F2AF1CB00FAEF4A /* FATradPlusNativeAd.swift */; };
|
||||||
035589582F2B353200FAEF4A /* FATradPlusNativeAdView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 035589572F2B353200FAEF4A /* FATradPlusNativeAdView.swift */; };
|
035589582F2B353200FAEF4A /* FATradPlusNativeAdView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 035589572F2B353200FAEF4A /* FATradPlusNativeAdView.swift */; };
|
||||||
|
039BE2A92F3B106D00B9D705 /* FAAdStatModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 039BE2A82F3B106D00B9D705 /* FAAdStatModel.swift */; };
|
||||||
|
039BE2AB2F3B329E00B9D705 /* FAUploadAdsPriceModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 039BE2AA2F3B329E00B9D705 /* FAUploadAdsPriceModel.swift */; };
|
||||||
039CE6042EAA2621007B5EED /* AppDelegate+FAAdjust.swift in Sources */ = {isa = PBXBuildFile; fileRef = 039CE6032EAA2612007B5EED /* AppDelegate+FAAdjust.swift */; };
|
039CE6042EAA2621007B5EED /* AppDelegate+FAAdjust.swift in Sources */ = {isa = PBXBuildFile; fileRef = 039CE6032EAA2612007B5EED /* AppDelegate+FAAdjust.swift */; };
|
||||||
039CE6092EAA2F71007B5EED /* FAAdjustStateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 039CE6082EAA2F62007B5EED /* FAAdjustStateManager.swift */; };
|
039CE6092EAA2F71007B5EED /* FAAdjustStateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 039CE6082EAA2F62007B5EED /* FAAdjustStateManager.swift */; };
|
||||||
039CE60B2EAA31CB007B5EED /* FAStatAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 039CE60A2EAA31CB007B5EED /* FAStatAPI.swift */; };
|
039CE60B2EAA31CB007B5EED /* FAStatAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 039CE60A2EAA31CB007B5EED /* FAStatAPI.swift */; };
|
||||||
@ -444,6 +446,8 @@
|
|||||||
0355894F2F2AEF3700FAEF4A /* FANativeAdManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FANativeAdManager.swift; sourceTree = "<group>"; };
|
0355894F2F2AEF3700FAEF4A /* FANativeAdManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FANativeAdManager.swift; sourceTree = "<group>"; };
|
||||||
035589532F2AF1CB00FAEF4A /* FATradPlusNativeAd.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FATradPlusNativeAd.swift; sourceTree = "<group>"; };
|
035589532F2AF1CB00FAEF4A /* FATradPlusNativeAd.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FATradPlusNativeAd.swift; sourceTree = "<group>"; };
|
||||||
035589572F2B353200FAEF4A /* FATradPlusNativeAdView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FATradPlusNativeAdView.swift; sourceTree = "<group>"; };
|
035589572F2B353200FAEF4A /* FATradPlusNativeAdView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FATradPlusNativeAdView.swift; sourceTree = "<group>"; };
|
||||||
|
039BE2A82F3B106D00B9D705 /* FAAdStatModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAAdStatModel.swift; sourceTree = "<group>"; };
|
||||||
|
039BE2AA2F3B329E00B9D705 /* FAUploadAdsPriceModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAUploadAdsPriceModel.swift; sourceTree = "<group>"; };
|
||||||
039CE6032EAA2612007B5EED /* AppDelegate+FAAdjust.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AppDelegate+FAAdjust.swift"; sourceTree = "<group>"; };
|
039CE6032EAA2612007B5EED /* AppDelegate+FAAdjust.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AppDelegate+FAAdjust.swift"; sourceTree = "<group>"; };
|
||||||
039CE6082EAA2F62007B5EED /* FAAdjustStateManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAAdjustStateManager.swift; sourceTree = "<group>"; };
|
039CE6082EAA2F62007B5EED /* FAAdjustStateManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAAdjustStateManager.swift; sourceTree = "<group>"; };
|
||||||
039CE60A2EAA31CB007B5EED /* FAStatAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAStatAPI.swift; sourceTree = "<group>"; };
|
039CE60A2EAA31CB007B5EED /* FAStatAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAStatAPI.swift; sourceTree = "<group>"; };
|
||||||
@ -813,6 +817,8 @@
|
|||||||
035589382F2319EB00FAEF4A /* Open */,
|
035589382F2319EB00FAEF4A /* Open */,
|
||||||
035589372F2319DD00FAEF4A /* Rewarded */,
|
035589372F2319DD00FAEF4A /* Rewarded */,
|
||||||
035589352F2305D800FAEF4A /* FAAdManager.swift */,
|
035589352F2305D800FAEF4A /* FAAdManager.swift */,
|
||||||
|
039BE2A82F3B106D00B9D705 /* FAAdStatModel.swift */,
|
||||||
|
039BE2AA2F3B329E00B9D705 /* FAUploadAdsPriceModel.swift */,
|
||||||
);
|
);
|
||||||
path = AdManager;
|
path = AdManager;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -2041,6 +2047,7 @@
|
|||||||
F3T938414J234X46539JR019 /* Resources */,
|
F3T938414J234X46539JR019 /* Resources */,
|
||||||
4809W21R638Z15866LWB2041 /* [CP] Embed Pods Frameworks */,
|
4809W21R638Z15866LWB2041 /* [CP] Embed Pods Frameworks */,
|
||||||
03E9A7632EC19101000D1067 /* Embed Foundation Extensions */,
|
03E9A7632EC19101000D1067 /* Embed Foundation Extensions */,
|
||||||
|
0E1F49D1E8B4CB4FCFBE75F4 /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@ -2160,6 +2167,27 @@
|
|||||||
/* End PBXResourcesBuildPhase section */
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXShellScriptBuildPhase section */
|
/* Begin PBXShellScriptBuildPhase section */
|
||||||
|
0E1F49D1E8B4CB4FCFBE75F4 /* [CP] Copy Pods Resources */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-Fableon/Pods-Fableon-resources-${CONFIGURATION}-input-files.xcfilelist",
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
);
|
||||||
|
name = "[CP] Copy Pods Resources";
|
||||||
|
outputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-Fableon/Pods-Fableon-resources-${CONFIGURATION}-output-files.xcfilelist",
|
||||||
|
);
|
||||||
|
outputPaths = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Fableon/Pods-Fableon-resources.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
4809W21R638Z15866LWB2041 /* [CP] Embed Pods Frameworks */ = {
|
4809W21R638Z15866LWB2041 /* [CP] Embed Pods Frameworks */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@ -2304,6 +2332,7 @@
|
|||||||
F39S0H806843N21RM0O95488 /* VARResultController.swift in Sources */,
|
F39S0H806843N21RM0O95488 /* VARResultController.swift in Sources */,
|
||||||
F3D03219Y8NV50N2S66014LX /* GPOOllectionFableon.swift in Sources */,
|
F3D03219Y8NV50N2S66014LX /* GPOOllectionFableon.swift in Sources */,
|
||||||
03E9A74E2EB5E0F7000D1067 /* FALanguageModel.swift in Sources */,
|
03E9A74E2EB5E0F7000D1067 /* FALanguageModel.swift in Sources */,
|
||||||
|
039BE2A92F3B106D00B9D705 /* FAAdStatModel.swift in Sources */,
|
||||||
F399V72654D56W408WQO18D5 /* OOSelectorSection.swift in Sources */,
|
F399V72654D56W408WQO18D5 /* OOSelectorSection.swift in Sources */,
|
||||||
F31RUU6I99967458M4X40V5C /* HNFDramaController.swift in Sources */,
|
F31RUU6I99967458M4X40V5C /* HNFDramaController.swift in Sources */,
|
||||||
F3MIE47471I04686Y131BPU5 /* TGleeScreenView.swift in Sources */,
|
F3MIE47471I04686Y131BPU5 /* TGleeScreenView.swift in Sources */,
|
||||||
@ -2329,6 +2358,7 @@
|
|||||||
031FDEC62EB1E4E600F4CAC7 /* FACoinPackTitleView.swift in Sources */,
|
031FDEC62EB1E4E600F4CAC7 /* FACoinPackTitleView.swift in Sources */,
|
||||||
F3K238643L913I6RK4G7S006 /* CSceneRegister.swift in Sources */,
|
F3K238643L913I6RK4G7S006 /* CSceneRegister.swift in Sources */,
|
||||||
F3ZT3I4VAGB5405FWL36UW12 /* ZFGEtworkCell.swift in Sources */,
|
F3ZT3I4VAGB5405FWL36UW12 /* ZFGEtworkCell.swift in Sources */,
|
||||||
|
039BE2AB2F3B329E00B9D705 /* FAUploadAdsPriceModel.swift in Sources */,
|
||||||
F35O71332554S53191121042 /* UOModalCell.swift in Sources */,
|
F35O71332554S53191121042 /* UOModalCell.swift in Sources */,
|
||||||
F3L30772U87770116598U282 /* NLaunchDelegate.swift in Sources */,
|
F3L30772U87770116598U282 /* NLaunchDelegate.swift in Sources */,
|
||||||
039CE62C2EAB5B07007B5EED /* FAStoreCoinsBigCell.swift in Sources */,
|
039CE62C2EAB5B07007B5EED /* FAStoreCoinsBigCell.swift in Sources */,
|
||||||
|
|||||||
@ -123,7 +123,9 @@ extension SceneDelegate {
|
|||||||
FAAdjustStateManager.manager.isOpenApp = true
|
FAAdjustStateManager.manager.isOpenApp = true
|
||||||
|
|
||||||
window?.rootViewController = FATabBarController()
|
window?.rootViewController = FATabBarController()
|
||||||
// window?.addSubview(FAOpenAdManager.manager.openAdVC.view)
|
#if canImport(TradPlusAds)
|
||||||
|
window?.addSubview(FAOpenAdManager.manager.openAdVC.view)
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -67,6 +67,10 @@ extension UIViewController {
|
|||||||
|
|
||||||
@objc func handleNavigationBack() {
|
@objc func handleNavigationBack() {
|
||||||
self.fa_toLastViewController(animated: true)
|
self.fa_toLastViewController(animated: true)
|
||||||
|
if FARewardedAdManager.manager.isAdAvailable {
|
||||||
|
FARewardedAdManager.manager.businessScene = .detailBack
|
||||||
|
FARewardedAdManager.manager.show()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func fa_toLastViewController(animated: Bool) {
|
func fa_toLastViewController(animated: Bool) {
|
||||||
|
|||||||
@ -279,14 +279,14 @@ struct FAAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
///广告解锁
|
///广告解锁
|
||||||
static func requestAdUnlockVideo(shortPlayId: String, videoId: String, completer: ((_ model: FAVideoUnlockResult?) -> Void)?) {
|
static func requestAdUnlockVideo(shortPlayId: String, videoId: String, platform: String, adsId: String, completer: ((_ model: FAVideoUnlockResult?) -> Void)?) {
|
||||||
|
|
||||||
let parameters = [
|
let parameters = [
|
||||||
"short_play_id" : shortPlayId,
|
"short_play_id" : shortPlayId,
|
||||||
"video_id" : videoId,
|
"video_id" : videoId,
|
||||||
"ads_id" : "",
|
"ads_id" : adsId,
|
||||||
"ads_platform_key" : "",
|
"ads_platform_key" : platform,
|
||||||
"trans_id" : "",
|
"trans_id" : adsId,
|
||||||
"watch_num" : "1"
|
"watch_num" : "1"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@ -164,6 +164,28 @@ class FAStatAPI: NSObject {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///统计广告历史
|
||||||
|
static func requestUploadAdsHistory(model: FAAdStatModel) {
|
||||||
|
FANetworkManager.manager.request(FABaseURL + "/ad/history",
|
||||||
|
method: .post,
|
||||||
|
parameters: model.toDictionary(),
|
||||||
|
isLoding: false,
|
||||||
|
isToast: false) { (response: FANetworkManager.Response<String>) in
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
///上传广告价值
|
||||||
|
static func requestUploadAdsPrice(model: FAUploadAdsPriceModel) {
|
||||||
|
FANetworkManager.manager.request(FABaseURL + "/ad/watch",
|
||||||
|
method: .post,
|
||||||
|
parameters: model.toDictionary(),
|
||||||
|
isLoding: false,
|
||||||
|
isToast: false) { (response: FANetworkManager.Response<String>) in
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension FAStatAPI {
|
extension FAStatAPI {
|
||||||
|
|||||||
@ -55,7 +55,8 @@ class FAPlayerDetailCell: JXPlayerListCell {
|
|||||||
|
|
||||||
override init(frame: CGRect) {
|
override init(frame: CGRect) {
|
||||||
super.init(frame: frame)
|
super.init(frame: frame)
|
||||||
|
self.player.player.pausedToKeepAppearState = false
|
||||||
|
self.player.controlLayerNeedDisappear()
|
||||||
fa_setupLayout()
|
fa_setupLayout()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -97,6 +97,10 @@ class FAPlayerDetailViewController: JXPlayerListViewController {
|
|||||||
|
|
||||||
override func viewDidAppear(_ animated: Bool) {
|
override func viewDidAppear(_ animated: Bool) {
|
||||||
super.viewDidAppear(animated)
|
super.viewDidAppear(animated)
|
||||||
|
let currentVideoInfoModel = (self.fa_viewModel.currentCell as? FAPlayerDetailCell)?.model as? FAVideoInfoModel
|
||||||
|
FARewardedAdManager.manager.businessScene = .detail
|
||||||
|
FARewardedAdManager.manager.shortPlayId = currentVideoInfoModel?.short_play_id
|
||||||
|
FARewardedAdManager.manager.shortPlayVideoId = currentVideoInfoModel?.short_play_video_id
|
||||||
FAOpenAdManager.manager.vcAllowedShowAd = false
|
FAOpenAdManager.manager.vcAllowedShowAd = false
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -215,6 +219,11 @@ extension FAPlayerDetailViewController: JXPlayerListViewControllerDelegate, JXPl
|
|||||||
func jx_playerListViewController(_ viewController: JXPlayerListViewController, didChangeIndexPathForVisible indexPath: IndexPath) {
|
func jx_playerListViewController(_ viewController: JXPlayerListViewController, didChangeIndexPathForVisible indexPath: IndexPath) {
|
||||||
let model = self.fa_viewModel.dataArr[indexPath.section].episodeList?[indexPath.row]
|
let model = self.fa_viewModel.dataArr[indexPath.section].episodeList?[indexPath.row]
|
||||||
self.epText = "Ep.\(model?.episode ?? "")"
|
self.epText = "Ep.\(model?.episode ?? "")"
|
||||||
|
|
||||||
|
if !jx_isDidDisappear {
|
||||||
|
FARewardedAdManager.manager.shortPlayId = model?.short_play_id
|
||||||
|
FARewardedAdManager.manager.shortPlayVideoId = model?.short_play_video_id
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func jx_shouldAutoScrollNextEpisode(_ viewController: JXPlayerListViewController) -> Bool {
|
func jx_shouldAutoScrollNextEpisode(_ viewController: JXPlayerListViewController) -> Bool {
|
||||||
|
|||||||
@ -283,6 +283,8 @@ extension FAShortDetailViewModel {
|
|||||||
if manager.isAdAvailable {
|
if manager.isAdAvailable {
|
||||||
manager.delegate = self
|
manager.delegate = self
|
||||||
manager.show()
|
manager.show()
|
||||||
|
} else {
|
||||||
|
manager.load()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -312,12 +314,12 @@ extension FAShortDetailViewModel {
|
|||||||
//MARK: FARewardedAdManagerDelegate
|
//MARK: FARewardedAdManagerDelegate
|
||||||
extension FAShortDetailViewModel: FARewardedAdManagerDelegate {
|
extension FAShortDetailViewModel: FARewardedAdManagerDelegate {
|
||||||
|
|
||||||
func fa_rewardedAdManagerDidDismiss(adManager: FARewardedAdManager) {
|
func fa_rewardedAdManagerDidDismiss(adManager: FARewardedAdManager, platform: String, adUnitID: String) {
|
||||||
guard let videoInfo = self.currentCell?.model as? FAVideoInfoModel else { return }
|
guard let videoInfo = self.currentCell?.model as? FAVideoInfoModel else { return }
|
||||||
guard let shortPlayId = videoInfo.short_play_id else { return }
|
guard let shortPlayId = videoInfo.short_play_id else { return }
|
||||||
guard let videoId = videoInfo.short_play_video_id else { return }
|
guard let videoId = videoInfo.short_play_video_id else { return }
|
||||||
|
|
||||||
FAAPI.requestAdUnlockVideo(shortPlayId: shortPlayId, videoId: videoId) { [weak self] model in
|
FAAPI.requestAdUnlockVideo(shortPlayId: shortPlayId, videoId: videoId, platform: platform, adsId: adUnitID) { [weak self] model in
|
||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
guard model?.status == .success else { return }
|
guard model?.status == .success else { return }
|
||||||
|
|
||||||
|
|||||||
@ -77,10 +77,20 @@ class FABannerAdManager: NSObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var isAdAvailable: Bool {
|
var isAdAvailable: Bool {
|
||||||
return bannerAd?.isReady ?? false
|
if FALogin.manager.userInfo?.user_level == .ad {
|
||||||
|
return bannerAd?.isReady ?? false
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadAd() {
|
func loadAd() {
|
||||||
|
guard FALogin.manager.userInfo?.user_level == .ad else {
|
||||||
|
let error = NSError(domain: "非广告用户", code: -1)
|
||||||
|
self.delegate?.fa_bannerAdManager?(manager: self, didLoadFail: error)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
let ad = FATradPlusBannerAd()
|
let ad = FATradPlusBannerAd()
|
||||||
ad.delegate = self
|
ad.delegate = self
|
||||||
|
|
||||||
|
|||||||
@ -13,11 +13,23 @@ import TradPlusAds
|
|||||||
|
|
||||||
|
|
||||||
class FAAdManager: NSObject {
|
class FAAdManager: NSObject {
|
||||||
|
///业务场景
|
||||||
|
enum BusinessScene: String, SmartCaseDefaultable {
|
||||||
|
case detail = "detail"
|
||||||
|
case detailBack = "detail_back"
|
||||||
|
case main = "main"
|
||||||
|
case me = "me"
|
||||||
|
case reward = "reward"
|
||||||
|
case splash = "splash"
|
||||||
|
case banner = "banner"
|
||||||
|
}
|
||||||
|
|
||||||
static func initSdk() {
|
static func initSdk() {
|
||||||
#if canImport(TradPlusAds)
|
#if canImport(TradPlusAds)
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
TradPlus.setLogLevel(MSLogLevelAll)
|
TradPlus.setLogLevel(MSLogLevelAll)
|
||||||
|
#else
|
||||||
|
TradPlus.setLogLevel(MSLogLevelOff)
|
||||||
#endif
|
#endif
|
||||||
TradPlus.initSDK("8C768B1A89BA057E47D752181A7BDA21") { error in
|
TradPlus.initSDK("8C768B1A89BA057E47D752181A7BDA21") { error in
|
||||||
if let error = error {
|
if let error = error {
|
||||||
@ -30,9 +42,14 @@ class FAAdManager: NSObject {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enum FAAdType {
|
|
||||||
|
|
||||||
|
enum FAAdType: String {
|
||||||
case rewarded
|
case rewarded
|
||||||
case interstitial
|
case interstitial
|
||||||
case banner
|
case banner
|
||||||
|
|||||||
30
Fableon/Object/Libs/AdManager/FAAdStatModel.swift
Normal file
30
Fableon/Object/Libs/AdManager/FAAdStatModel.swift
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
//
|
||||||
|
// FAAdStatModel.swift
|
||||||
|
// Fableon
|
||||||
|
//
|
||||||
|
// Created by 湖北秦九 on 2026/2/10.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
import SmartCodable
|
||||||
|
|
||||||
|
class FAAdStatModel: NSObject, SmartCodable {
|
||||||
|
|
||||||
|
required override init() { }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var type: String? //start click error click show_failed load_failed Interrupt(退到后台) close
|
||||||
|
var ads_id: String?
|
||||||
|
var view_seconds: Int?
|
||||||
|
var loading_time: Int?
|
||||||
|
var ad_platform_key: FAAdPlatform?
|
||||||
|
var scene: FAAdManager.BusinessScene?
|
||||||
|
var short_play_id: String?
|
||||||
|
var short_play_video_id: String?
|
||||||
|
var error_msg: String?
|
||||||
|
var ad_platform_name: FAAdPlatform?
|
||||||
|
var ag_platform_name: String?
|
||||||
|
var ad_type: String?
|
||||||
|
|
||||||
|
}
|
||||||
25
Fableon/Object/Libs/AdManager/FAUploadAdsPriceModel.swift
Normal file
25
Fableon/Object/Libs/AdManager/FAUploadAdsPriceModel.swift
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
//
|
||||||
|
// FAUploadAdsPriceModel.swift
|
||||||
|
// Fableon
|
||||||
|
//
|
||||||
|
// Created by 湖北秦九 on 2026/2/10.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
import SmartCodable
|
||||||
|
|
||||||
|
class FAUploadAdsPriceModel: NSObject, SmartCodable {
|
||||||
|
|
||||||
|
required override init() { }
|
||||||
|
|
||||||
|
var short_play_id: String?
|
||||||
|
var short_play_video_id: String?
|
||||||
|
var short_play_launch_id: String?
|
||||||
|
var type: String?
|
||||||
|
var agent_name: String?
|
||||||
|
var alliance_name: String?
|
||||||
|
var money: String?
|
||||||
|
var scene: FAAdManager.BusinessScene?
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -74,7 +74,11 @@ class FANativeAdManager: NSObject {
|
|||||||
let contentSize: CGSize = .init(width: 300, height: 400)
|
let contentSize: CGSize = .init(width: 300, height: 400)
|
||||||
|
|
||||||
var isAdAvailable: Bool {
|
var isAdAvailable: Bool {
|
||||||
return nativeAd?.isReady ?? false
|
if FALogin.manager.userInfo?.user_level == .ad {
|
||||||
|
return nativeAd?.isReady ?? false
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
///广告是否在加载中
|
///广告是否在加载中
|
||||||
@ -94,6 +98,11 @@ class FANativeAdManager: NSObject {
|
|||||||
|
|
||||||
|
|
||||||
func load() {
|
func load() {
|
||||||
|
guard FALogin.manager.userInfo?.user_level == .ad else {
|
||||||
|
let error = NSError(domain: "非广告用户", code: -1)
|
||||||
|
self.delegate?.fa_nativeAdManager?(manager: self, didLoadFail: error)
|
||||||
|
return
|
||||||
|
}
|
||||||
guard !self.isLoadingAd else { return }
|
guard !self.isLoadingAd else { return }
|
||||||
|
|
||||||
self.isLoadingAd = true
|
self.isLoadingAd = true
|
||||||
@ -105,7 +114,13 @@ class FANativeAdManager: NSObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func show() {
|
func show() {
|
||||||
guard !hasShow else { return }
|
guard FALogin.manager.userInfo?.user_level == .ad else {
|
||||||
|
let error = NSError(domain: "非广告用户", code: -1)
|
||||||
|
self.delegate?.fa_nativeAdManager?(manager: self, didDisplayFail: error)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
guard !hasShow, self.isAdAvailable else { return }
|
||||||
|
|
||||||
self.hasShow = true
|
self.hasShow = true
|
||||||
self.nativeAd?.show()
|
self.nativeAd?.show()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -82,6 +82,11 @@ class FAOpenAdManager: NSObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func loadAd() {
|
func loadAd() {
|
||||||
|
guard FALogin.manager.userInfo?.user_level == .ad else {
|
||||||
|
let error = NSError(domain: "非广告用户", code: -1)
|
||||||
|
self.delegate?.fa_openAdManager?(manager: self, didOtherFail: error)
|
||||||
|
return
|
||||||
|
}
|
||||||
if isLoadingAd || isAdAvailable {
|
if isLoadingAd || isAdAvailable {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -92,6 +97,11 @@ class FAOpenAdManager: NSObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func showAd() {
|
func showAd() {
|
||||||
|
guard FALogin.manager.userInfo?.user_level == .ad else {
|
||||||
|
let error = NSError(domain: "非广告用户", code: -1)
|
||||||
|
self.delegate?.fa_openAdManager?(manager: self, didOtherFail: error)
|
||||||
|
return
|
||||||
|
}
|
||||||
guard let ad = appOpenAd, isAdAvailable else {
|
guard let ad = appOpenAd, isAdAvailable else {
|
||||||
loadAd()
|
loadAd()
|
||||||
return
|
return
|
||||||
@ -105,6 +115,11 @@ class FAOpenAdManager: NSObject {
|
|||||||
|
|
||||||
/// 外部调用的主要入口
|
/// 外部调用的主要入口
|
||||||
func showAdIfAvailable() {
|
func showAdIfAvailable() {
|
||||||
|
guard FALogin.manager.userInfo?.user_level == .ad else {
|
||||||
|
let error = NSError(domain: "非广告用户", code: -1)
|
||||||
|
self.delegate?.fa_openAdManager?(manager: self, didOtherFail: error)
|
||||||
|
return
|
||||||
|
}
|
||||||
// 如果正在展示广告,不再重复触发
|
// 如果正在展示广告,不再重复触发
|
||||||
guard !isShowingAd else { return }
|
guard !isShowingAd else { return }
|
||||||
|
|
||||||
|
|||||||
@ -20,7 +20,7 @@ import UIKit
|
|||||||
///广告被展示
|
///广告被展示
|
||||||
@objc optional func fa_rewardedAdManagerDidShow(adManager: FARewardedAdManager)
|
@objc optional func fa_rewardedAdManagerDidShow(adManager: FARewardedAdManager)
|
||||||
///广告被关闭
|
///广告被关闭
|
||||||
@objc optional func fa_rewardedAdManagerDidDismiss(adManager: FARewardedAdManager)
|
@objc optional func fa_rewardedAdManagerDidDismiss(adManager: FARewardedAdManager, platform: String, adUnitID: String)
|
||||||
///广告被点击
|
///广告被点击
|
||||||
@objc optional func fa_rewardedAdManagerDidClick(adManager: FARewardedAdManager)
|
@objc optional func fa_rewardedAdManagerDidClick(adManager: FARewardedAdManager)
|
||||||
///其它错误
|
///其它错误
|
||||||
@ -34,12 +34,14 @@ protocol FARewardedAdDelegate: NSObjectProtocol {
|
|||||||
// func rewardedAd(ad: BRRewardedAd, userDidEarnReward adInfo: VPAdInfo)
|
// func rewardedAd(ad: BRRewardedAd, userDidEarnReward adInfo: VPAdInfo)
|
||||||
///广告加载失败
|
///广告加载失败
|
||||||
func fa_rewardedAd(ad: FARewardedAd, didLoadFail error: Error)
|
func fa_rewardedAd(ad: FARewardedAd, didLoadFail error: Error)
|
||||||
|
///开始加载
|
||||||
|
func fa_rewardedAdDidStartLoad(ad: FARewardedAd)
|
||||||
///广告加载成功
|
///广告加载成功
|
||||||
func fa_rewardedAdDidLoadFinish(ad: FARewardedAd)
|
func fa_rewardedAdDidLoadFinish(ad: FARewardedAd)
|
||||||
///广告展示失败
|
///广告展示失败
|
||||||
func fa_rewardedAd(ad: FARewardedAd, didDisplayFail error: Error)
|
func fa_rewardedAd(ad: FARewardedAd, didDisplayFail error: Error)
|
||||||
///广告被展示
|
///广告被展示
|
||||||
func fa_rewardedAdDidShow(ad: FARewardedAd)
|
func fa_rewardedAdDidShow(ad: FARewardedAd, adInfo: [AnyHashable : Any])
|
||||||
///广告被关闭
|
///广告被关闭
|
||||||
func fa_rewardedAdDidDismiss(ad: FARewardedAd)
|
func fa_rewardedAdDidDismiss(ad: FARewardedAd)
|
||||||
///广告被点击
|
///广告被点击
|
||||||
@ -74,38 +76,59 @@ class FARewardedAdManager: NSObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var isAdAvailable: Bool {
|
var isAdAvailable: Bool {
|
||||||
return rewardedAd?.isReady ?? false
|
if FALogin.manager.userInfo?.user_level == .ad {
|
||||||
|
return rewardedAd?.isReady ?? false
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
///广告是否在加载中
|
||||||
|
private(set) var isLoadingAd = false
|
||||||
|
|
||||||
|
private var isPlaying = false
|
||||||
|
|
||||||
|
///用于数据统计
|
||||||
|
var businessScene: FAAdManager.BusinessScene = .main
|
||||||
|
var shortPlayId: String?
|
||||||
|
var shortPlayVideoId: String?
|
||||||
|
private var startShowDate: Date? = nil
|
||||||
|
private var startLoadDate: Date?
|
||||||
|
private var endLoadDate: Date?
|
||||||
|
|
||||||
|
|
||||||
override init() {
|
override init() {
|
||||||
super.init()
|
super.init()
|
||||||
|
NotificationCenter.default.addObserver(self, selector: #selector(didEnterBackgroundNotification), name: UIApplication.didEnterBackgroundNotification, object: nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func load() {
|
func load() {
|
||||||
|
guard FALogin.manager.userInfo?.user_level == .ad else {
|
||||||
|
let error = NSError(domain: "非广告用户", code: -1)
|
||||||
|
self.delegate?.fa_rewardedAdManager?(adManager: self, didOtherFail: error)
|
||||||
|
return
|
||||||
|
}
|
||||||
if self.isAdAvailable { return }
|
if self.isAdAvailable { return }
|
||||||
|
if self.isLoadingAd { return }
|
||||||
|
|
||||||
// if loadAdType != .rewarded {
|
self.isLoadingAd = true
|
||||||
// loadAdType = .rewarded
|
|
||||||
// } else {
|
self.businessScene = .main
|
||||||
// loadAdType = .interstitial
|
|
||||||
// }
|
self.rewardedAd = FATradPlusInterstitialAd()
|
||||||
//
|
|
||||||
// if loadAdType == .rewarded {
|
|
||||||
// self.rewardedAd = FATradPlusRewardedAd()
|
|
||||||
// } else {
|
|
||||||
self.rewardedAd = FATradPlusInterstitialAd()
|
|
||||||
// }
|
|
||||||
self.rewardedAd?.loadAd()
|
self.rewardedAd?.loadAd()
|
||||||
|
|
||||||
// self.requestAdOverview()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func show() {
|
func show() {
|
||||||
|
guard FALogin.manager.userInfo?.user_level == .ad else {
|
||||||
|
let error = NSError(domain: "非广告用户", code: -1)
|
||||||
|
self.delegate?.fa_rewardedAdManager?(adManager: self, didOtherFail: error)
|
||||||
|
return
|
||||||
|
}
|
||||||
guard self.isAdAvailable else { return }
|
guard self.isAdAvailable else { return }
|
||||||
|
|
||||||
self.rewardedAd?.showAd()
|
self.rewardedAd?.showAd()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,34 +140,76 @@ extension FARewardedAdManager: FARewardedAdDelegate {
|
|||||||
|
|
||||||
func fa_rewardedAd(ad: any FARewardedAd, didLoadFail error: any Error) {
|
func fa_rewardedAd(ad: any FARewardedAd, didLoadFail error: any Error) {
|
||||||
self.rewardedAd = nil
|
self.rewardedAd = nil
|
||||||
|
self.endLoadDate = Date()
|
||||||
|
self.isLoadingAd = false
|
||||||
|
self.uploadAdsHistory(ad: ad, type: "load_failed", errorMsg: error.localizedDescription)
|
||||||
self.delegate?.fa_rewardedAdManager?(adManager: self, didLoadFail: error)
|
self.delegate?.fa_rewardedAdManager?(adManager: self, didLoadFail: error)
|
||||||
|
self.endLoadDate = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func fa_rewardedAd(ad: any FARewardedAd, didDisplayFail error: any Error) {
|
func fa_rewardedAd(ad: any FARewardedAd, didDisplayFail error: any Error) {
|
||||||
|
self.isPlaying = false
|
||||||
self.rewardedAd = nil
|
self.rewardedAd = nil
|
||||||
|
self.uploadAdsHistory(ad: ad, type: "show_failed", errorMsg: error.localizedDescription)
|
||||||
self.delegate?.fa_rewardedAdManager?(adManager: self, didDisplayFail: error)
|
self.delegate?.fa_rewardedAdManager?(adManager: self, didDisplayFail: error)
|
||||||
}
|
}
|
||||||
|
|
||||||
func fa_rewardedAdDidLoadFinish(ad: any FARewardedAd) {
|
func fa_rewardedAdDidStartLoad(ad: any FARewardedAd) {
|
||||||
self.delegate?.fa_rewardedAdManagerDidLoadFinish?(adManager: self)
|
self.startLoadDate = Date()
|
||||||
|
self.uploadAdsHistory(ad: ad, type: "startLoad")
|
||||||
}
|
}
|
||||||
|
|
||||||
func fa_rewardedAdDidShow(ad: any FARewardedAd) {
|
func fa_rewardedAdDidLoadFinish(ad: any FARewardedAd) {
|
||||||
|
self.isLoadingAd = false
|
||||||
|
self.endLoadDate = Date()
|
||||||
|
self.uploadAdsHistory(ad: ad, type: "endLoad")
|
||||||
|
self.delegate?.fa_rewardedAdManagerDidLoadFinish?(adManager: self)
|
||||||
|
self.endLoadDate = nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func fa_rewardedAdDidShow(ad: any FARewardedAd, adInfo: [AnyHashable : Any]) {
|
||||||
|
self.isPlaying = true
|
||||||
|
self.startShowDate = Date()
|
||||||
|
self.uploadAdsHistory(ad: ad, type: "start", viewSeconds: 0)
|
||||||
|
self.requestUploadAdsPrice(ad: ad, adInfo: adInfo)
|
||||||
self.delegate?.fa_rewardedAdManagerDidShow?(adManager: self)
|
self.delegate?.fa_rewardedAdManagerDidShow?(adManager: self)
|
||||||
}
|
}
|
||||||
|
|
||||||
func fa_rewardedAdDidDismiss(ad: any FARewardedAd) {
|
func fa_rewardedAdDidDismiss(ad: any FARewardedAd) {
|
||||||
|
self.isPlaying = false
|
||||||
self.rewardedAd = nil
|
self.rewardedAd = nil
|
||||||
self.delegate?.fa_rewardedAdManagerDidDismiss?(adManager: self)
|
var viewSeconds: Int? = nil
|
||||||
|
if let startShowDate = self.startShowDate {
|
||||||
|
viewSeconds = Int(Date().timeIntervalSince(startShowDate))
|
||||||
|
}
|
||||||
|
self.uploadAdsHistory(ad: ad, type: "close", viewSeconds: viewSeconds)
|
||||||
|
self.delegate?.fa_rewardedAdManagerDidDismiss?(adManager: self, platform: ad.adPlatform.rawValue, adUnitID: ad.adUnitID)
|
||||||
//加载新的广告
|
//加载新的广告
|
||||||
self.load()
|
self.load()
|
||||||
}
|
}
|
||||||
|
|
||||||
func fa_rewardedAdDidClick(ad: any FARewardedAd) {
|
func fa_rewardedAdDidClick(ad: any FARewardedAd) {
|
||||||
|
var viewSeconds: Int? = nil
|
||||||
|
if let startShowDate = self.startShowDate {
|
||||||
|
viewSeconds = Int(Date().timeIntervalSince(startShowDate))
|
||||||
|
}
|
||||||
|
self.uploadAdsHistory(ad: ad, type: "click", viewSeconds: viewSeconds)
|
||||||
self.delegate?.fa_rewardedAdManagerDidClick?(adManager: self)
|
self.delegate?.fa_rewardedAdManagerDidClick?(adManager: self)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension FARewardedAdManager {
|
||||||
|
@objc private func didEnterBackgroundNotification() {
|
||||||
|
guard let ad = self.rewardedAd, self.isPlaying else { return }
|
||||||
|
|
||||||
|
var viewSeconds: Int? = nil
|
||||||
|
if let startShowDate = self.startShowDate {
|
||||||
|
viewSeconds = Int(Date().timeIntervalSince(startShowDate))
|
||||||
|
}
|
||||||
|
self.uploadAdsHistory(ad: ad, type: "Interrupt", viewSeconds: viewSeconds)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
extension FARewardedAdManager {
|
extension FARewardedAdManager {
|
||||||
|
|
||||||
private func requestAdOverview() {
|
private func requestAdOverview() {
|
||||||
@ -154,4 +219,43 @@ extension FARewardedAdManager {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func uploadAdsHistory(ad: any FARewardedAd, type: String, viewSeconds: Int? = nil, errorMsg: String? = nil) {
|
||||||
|
var loadTime: Int?
|
||||||
|
if let startDate = self.startLoadDate, let endDate = self.endLoadDate {
|
||||||
|
loadTime = Int(endDate.timeIntervalSince(startDate))
|
||||||
|
}
|
||||||
|
|
||||||
|
let model = FAAdStatModel()
|
||||||
|
model.short_play_id = self.shortPlayId
|
||||||
|
model.short_play_video_id = self.shortPlayVideoId
|
||||||
|
model.scene = self.businessScene
|
||||||
|
model.loading_time = loadTime
|
||||||
|
model.view_seconds = viewSeconds
|
||||||
|
model.ad_type = ad.adType.rawValue
|
||||||
|
model.ads_id = ad.adUnitID
|
||||||
|
model.ad_platform_key = ad.adPlatform
|
||||||
|
model.type = type
|
||||||
|
model.ag_platform_name = ad.networkName
|
||||||
|
model.ad_platform_name = ad.adPlatform
|
||||||
|
|
||||||
|
FAStatAPI.requestUploadAdsHistory(model: model)
|
||||||
|
}
|
||||||
|
|
||||||
|
func requestUploadAdsPrice(ad: any FARewardedAd, adInfo: [AnyHashable : Any]) {
|
||||||
|
guard let ecpm = adInfo["ecpm"] as? String else { return }
|
||||||
|
let money = (NSNumber(string: ecpm)?.doubleValue ?? 0) / 1000
|
||||||
|
|
||||||
|
let model = FAUploadAdsPriceModel()
|
||||||
|
model.short_play_id = self.shortPlayId
|
||||||
|
model.short_play_video_id = self.shortPlayVideoId
|
||||||
|
model.short_play_launch_id = ad.adUnitID
|
||||||
|
model.type = ad.adType.rawValue
|
||||||
|
model.agent_name = ad.adPlatform.rawValue
|
||||||
|
model.alliance_name = ad.networkName
|
||||||
|
model.money = "\(money)"
|
||||||
|
model.scene = self.businessScene
|
||||||
|
|
||||||
|
FAStatAPI.requestUploadAdsPrice(model: model)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -63,13 +63,17 @@ class FATradPlusInterstitialAd: NSObject, FARewardedAd {
|
|||||||
//MARK: TradPlusADInterstitialDelegate
|
//MARK: TradPlusADInterstitialDelegate
|
||||||
extension FATradPlusInterstitialAd: TradPlusADInterstitialDelegate {
|
extension FATradPlusInterstitialAd: TradPlusADInterstitialDelegate {
|
||||||
|
|
||||||
|
func tpInterstitialAdStartLoad(_ adInfo: [AnyHashable : Any]) {
|
||||||
|
self.delegate?.fa_rewardedAdDidStartLoad(ad: self)
|
||||||
|
}
|
||||||
|
|
||||||
func tpInterstitialAdLoaded(_ adInfo: [AnyHashable : Any]) {
|
func tpInterstitialAdLoaded(_ adInfo: [AnyHashable : Any]) {
|
||||||
self.networkName = (adInfo["adNetworkName"] as? String) ?? "unknown"
|
self.networkName = (adInfo["adNetworkName"] as? String) ?? "unknown"
|
||||||
self.delegate?.fa_rewardedAdDidLoadFinish(ad: self)
|
self.delegate?.fa_rewardedAdDidLoadFinish(ad: self)
|
||||||
}
|
}
|
||||||
|
|
||||||
func tpInterstitialAdImpression(_ adInfo: [AnyHashable : Any]) {
|
func tpInterstitialAdImpression(_ adInfo: [AnyHashable : Any]) {
|
||||||
self.delegate?.fa_rewardedAdDidShow(ad: self)
|
self.delegate?.fa_rewardedAdDidShow(ad: self, adInfo: adInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
func tpInterstitialAdLoadFailWithError(_ error: any Error) {
|
func tpInterstitialAdLoadFailWithError(_ error: any Error) {
|
||||||
|
|||||||
@ -58,6 +58,10 @@ class FATradPlusRewardedAd: NSObject, FARewardedAd {
|
|||||||
#if canImport(TradPlusAds)
|
#if canImport(TradPlusAds)
|
||||||
extension FATradPlusRewardedAd: TradPlusADRewardedDelegate {
|
extension FATradPlusRewardedAd: TradPlusADRewardedDelegate {
|
||||||
|
|
||||||
|
func tpRewardedAdStartLoad(_ adInfo: [AnyHashable : Any]) {
|
||||||
|
self.delegate?.fa_rewardedAdDidStartLoad(ad: self)
|
||||||
|
}
|
||||||
|
|
||||||
func tpRewardedAdLoaded(_ adInfo: [AnyHashable : Any]) {
|
func tpRewardedAdLoaded(_ adInfo: [AnyHashable : Any]) {
|
||||||
self.networkName = (adInfo["adNetworkName"] as? String) ?? "unknown"
|
self.networkName = (adInfo["adNetworkName"] as? String) ?? "unknown"
|
||||||
self.delegate?.fa_rewardedAdDidLoadFinish(ad: self)
|
self.delegate?.fa_rewardedAdDidLoadFinish(ad: self)
|
||||||
@ -68,7 +72,7 @@ extension FATradPlusRewardedAd: TradPlusADRewardedDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func tpRewardedAdImpression(_ adInfo: [AnyHashable : Any]) {
|
func tpRewardedAdImpression(_ adInfo: [AnyHashable : Any]) {
|
||||||
self.delegate?.fa_rewardedAdDidShow(ad: self)
|
self.delegate?.fa_rewardedAdDidShow(ad: self, adInfo: adInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
func tpRewardedAdShow(_ adInfo: [AnyHashable : Any], didFailWithError error: any Error) {
|
func tpRewardedAdShow(_ adInfo: [AnyHashable : Any], didFailWithError error: any Error) {
|
||||||
|
|||||||
@ -10,6 +10,12 @@ import SmartCodable
|
|||||||
|
|
||||||
class FAUserInfo: NSObject, SmartCodable, NSSecureCoding {
|
class FAUserInfo: NSObject, SmartCodable, NSSecureCoding {
|
||||||
|
|
||||||
|
enum UserLevel: String, SmartCaseDefaultable {
|
||||||
|
case high = "high"
|
||||||
|
case normal = "normal"
|
||||||
|
case ad = "ad"
|
||||||
|
}
|
||||||
|
|
||||||
var id: String?
|
var id: String?
|
||||||
var customer_id: String?
|
var customer_id: String?
|
||||||
var is_tourist: Bool?
|
var is_tourist: Bool?
|
||||||
@ -19,6 +25,7 @@ class FAUserInfo: NSObject, SmartCodable, NSSecureCoding {
|
|||||||
var send_coin_left_total: Int?
|
var send_coin_left_total: Int?
|
||||||
var is_vip: Bool?
|
var is_vip: Bool?
|
||||||
var vip_end_time: TimeInterval?
|
var vip_end_time: TimeInterval?
|
||||||
|
var user_level: UserLevel?
|
||||||
|
|
||||||
func getNickName() -> String {
|
func getNickName() -> String {
|
||||||
if let name = family_name, !name.isEmpty {
|
if let name = family_name, !name.isEmpty {
|
||||||
@ -48,6 +55,7 @@ class FAUserInfo: NSObject, SmartCodable, NSSecureCoding {
|
|||||||
coder.encode(send_coin_left_total, forKey: "send_coin_left_total")
|
coder.encode(send_coin_left_total, forKey: "send_coin_left_total")
|
||||||
coder.encode(is_vip, forKey: "is_vip")
|
coder.encode(is_vip, forKey: "is_vip")
|
||||||
coder.encode(vip_end_time, forKey: "vip_end_time")
|
coder.encode(vip_end_time, forKey: "vip_end_time")
|
||||||
|
coder.encode(user_level?.rawValue, forKey: "user_level")
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
required init?(coder: NSCoder) {
|
||||||
@ -61,5 +69,8 @@ class FAUserInfo: NSObject, SmartCodable, NSSecureCoding {
|
|||||||
send_coin_left_total = coder.decodeObject(of: NSNumber.self, forKey: "send_coin_left_total")?.intValue
|
send_coin_left_total = coder.decodeObject(of: NSNumber.self, forKey: "send_coin_left_total")?.intValue
|
||||||
is_vip = coder.decodeObject(of: NSNumber.self, forKey: "is_vip")?.boolValue
|
is_vip = coder.decodeObject(of: NSNumber.self, forKey: "is_vip")?.boolValue
|
||||||
vip_end_time = coder.decodeObject(of: NSNumber.self, forKey: "vip_end_time")?.doubleValue
|
vip_end_time = coder.decodeObject(of: NSNumber.self, forKey: "vip_end_time")?.doubleValue
|
||||||
|
if let user_level = coder.decodeObject(of: NSString.self, forKey: "user_level") as? String {
|
||||||
|
self.user_level = UserLevel(rawValue: user_level)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>GADApplicationIdentifier</key>
|
<key>GADApplicationIdentifier</key>
|
||||||
<string>ca-app-pub-3940256099942544~1458002511</string>
|
<string>ca-app-pub-2769716799986028~4800893663</string>
|
||||||
<key>CFBundleURLTypes</key>
|
<key>CFBundleURLTypes</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
@ -60,204 +60,204 @@
|
|||||||
</array>
|
</array>
|
||||||
<key>UIDesignRequiresCompatibility</key>
|
<key>UIDesignRequiresCompatibility</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>SKAdNetworkItems</key>
|
<key>SKAdNetworkItems</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>cstr6suwn9.skadnetwork</string>
|
<string>cstr6suwn9.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>4fzdc2evr5.skadnetwork</string>
|
<string>4fzdc2evr5.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>2fnua5tdw4.skadnetwork</string>
|
<string>2fnua5tdw4.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>ydx93a7ass.skadnetwork</string>
|
<string>ydx93a7ass.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>p78axxw29g.skadnetwork</string>
|
<string>p78axxw29g.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>v72qych5uu.skadnetwork</string>
|
<string>v72qych5uu.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>ludvb6z3bs.skadnetwork</string>
|
<string>ludvb6z3bs.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>cp8zw746q7.skadnetwork</string>
|
<string>cp8zw746q7.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>3sh42y64q3.skadnetwork</string>
|
<string>3sh42y64q3.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>c6k4g5qg8m.skadnetwork</string>
|
<string>c6k4g5qg8m.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>s39g8k73mm.skadnetwork</string>
|
<string>s39g8k73mm.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>3qy4746246.skadnetwork</string>
|
<string>3qy4746246.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>f38h382jlk.skadnetwork</string>
|
<string>f38h382jlk.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>hs6bdukanm.skadnetwork</string>
|
<string>hs6bdukanm.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>mlmmfzh3r3.skadnetwork</string>
|
<string>mlmmfzh3r3.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>v4nxqhlyqp.skadnetwork</string>
|
<string>v4nxqhlyqp.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>wzmmz9fp6w.skadnetwork</string>
|
<string>wzmmz9fp6w.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>su67r6k2v3.skadnetwork</string>
|
<string>su67r6k2v3.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>yclnxrl5pm.skadnetwork</string>
|
<string>yclnxrl5pm.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>t38b2kh725.skadnetwork</string>
|
<string>t38b2kh725.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>7ug5zh24hu.skadnetwork</string>
|
<string>7ug5zh24hu.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>gta9lk7p23.skadnetwork</string>
|
<string>gta9lk7p23.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>vutu7akeur.skadnetwork</string>
|
<string>vutu7akeur.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>y5ghdn5j9k.skadnetwork</string>
|
<string>y5ghdn5j9k.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>v9wttpbfk9.skadnetwork</string>
|
<string>v9wttpbfk9.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>n38lu8286q.skadnetwork</string>
|
<string>n38lu8286q.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>47vhws6wlr.skadnetwork</string>
|
<string>47vhws6wlr.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>kbd757ywx3.skadnetwork</string>
|
<string>kbd757ywx3.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>9t245vhmpl.skadnetwork</string>
|
<string>9t245vhmpl.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>a2p9lx4jpn.skadnetwork</string>
|
<string>a2p9lx4jpn.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>22mmun2rn5.skadnetwork</string>
|
<string>22mmun2rn5.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>44jx6755aq.skadnetwork</string>
|
<string>44jx6755aq.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>k674qkevps.skadnetwork</string>
|
<string>k674qkevps.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>4468km3ulz.skadnetwork</string>
|
<string>4468km3ulz.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>2u9pt9hc89.skadnetwork</string>
|
<string>2u9pt9hc89.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>8s468mfl3y.skadnetwork</string>
|
<string>8s468mfl3y.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>klf5c3l5u5.skadnetwork</string>
|
<string>klf5c3l5u5.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>ppxm28t8ap.skadnetwork</string>
|
<string>ppxm28t8ap.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>kbmxgpxpgc.skadnetwork</string>
|
<string>kbmxgpxpgc.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>uw77j35x4d.skadnetwork</string>
|
<string>uw77j35x4d.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>578prtvx9j.skadnetwork</string>
|
<string>578prtvx9j.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>4dzt52r2t5.skadnetwork</string>
|
<string>4dzt52r2t5.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>tl55sbb4fm.skadnetwork</string>
|
<string>tl55sbb4fm.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>c3frkrj4fj.skadnetwork</string>
|
<string>c3frkrj4fj.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>e5fvkxwrpn.skadnetwork</string>
|
<string>e5fvkxwrpn.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>8c4e2ghe7u.skadnetwork</string>
|
<string>8c4e2ghe7u.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>3rd42ekr43.skadnetwork</string>
|
<string>3rd42ekr43.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>97r2b46745.skadnetwork</string>
|
<string>97r2b46745.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SKAdNetworkIdentifier</key>
|
<key>SKAdNetworkIdentifier</key>
|
||||||
<string>3qcr597p9d.skadnetwork</string>
|
<string>3qcr597p9d.skadnetwork</string>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
56
Podfile
56
Podfile
@ -20,7 +20,7 @@ target 'Fableon' do
|
|||||||
pod 'YYText'
|
pod 'YYText'
|
||||||
pod 'Alamofire'
|
pod 'Alamofire'
|
||||||
pod 'SmartCodable'
|
pod 'SmartCodable'
|
||||||
pod 'JXPlayer', :git => 'https://github.com/zengjuexin/JXPlayer.git', :tag => '0.2.0'
|
pod 'JXPlayer', :git => 'https://github.com/zengjuexin/JXPlayer.git', :tag => '0.2.5'
|
||||||
pod 'Kingfisher'
|
pod 'Kingfisher'
|
||||||
pod 'SnapKit'
|
pod 'SnapKit'
|
||||||
pod 'FSPagerView'
|
pod 'FSPagerView'
|
||||||
@ -38,32 +38,32 @@ target 'Fableon' do
|
|||||||
pod 'Adjust'
|
pod 'Adjust'
|
||||||
|
|
||||||
# 广告SDK AdMob Meta Pangle Liftoff Mintegral InMobi Verve Bigo TaurusX UnityAds AppLovin IronSource
|
# 广告SDK AdMob Meta Pangle Liftoff Mintegral InMobi Verve Bigo TaurusX UnityAds AppLovin IronSource
|
||||||
# pod 'TradPlusAdSDK', '14.9.0'
|
pod 'TradPlusAdSDK', '14.9.0'
|
||||||
# pod 'TradPlusAdSDK/FacebookAdapter', '14.9.0'
|
pod 'TradPlusAdSDK/FacebookAdapter', '14.9.0'
|
||||||
# pod 'FBAudienceNetwork','6.20.1'
|
pod 'FBAudienceNetwork','6.20.1'
|
||||||
# pod 'TradPlusAdSDK/AdMobAdapter', '14.9.0'
|
pod 'TradPlusAdSDK/AdMobAdapter', '14.9.0'
|
||||||
# pod 'Google-Mobile-Ads-SDK','12.14.0'
|
pod 'Google-Mobile-Ads-SDK','12.14.0'
|
||||||
# pod 'TradPlusAdSDK/UnityAdapter', '14.9.0'
|
pod 'TradPlusAdSDK/UnityAdapter', '14.9.0'
|
||||||
# pod 'UnityAds','4.16.4'
|
pod 'UnityAds','4.16.4'
|
||||||
# pod 'TradPlusAdSDK/AppLovinAdapter', '14.9.0'
|
pod 'TradPlusAdSDK/AppLovinAdapter', '14.9.0'
|
||||||
# pod 'AppLovinSDK','13.5.0'
|
pod 'AppLovinSDK','13.5.0'
|
||||||
# pod 'TradPlusAdSDK/VungleAdapter', '14.9.0'
|
pod 'TradPlusAdSDK/VungleAdapter', '14.9.0'
|
||||||
# pod 'VungleAds', '7.6.1'
|
pod 'VungleAds', '7.6.1'
|
||||||
# pod 'TradPlusAdSDK/IronSourceAdapter', '14.9.0'
|
pod 'TradPlusAdSDK/IronSourceAdapter', '14.9.0'
|
||||||
# pod 'IronSourceSDK','9.2.0'
|
pod 'IronSourceSDK','9.2.0'
|
||||||
# pod 'TradPlusAdSDK/InMobiAdapter', '14.9.0'
|
pod 'TradPlusAdSDK/InMobiAdapter', '14.9.0'
|
||||||
# pod 'InMobiSDK' ,'11.1.0'
|
pod 'InMobiSDK' ,'11.1.0'
|
||||||
# pod 'TradPlusAdSDK/MintegralAdapter', '14.9.0'
|
pod 'TradPlusAdSDK/MintegralAdapter', '14.9.0'
|
||||||
# pod 'MintegralAdSDK' ,'7.7.9'
|
pod 'MintegralAdSDK' ,'7.7.9'
|
||||||
# pod 'MintegralAdSDK/All','7.7.9'
|
pod 'MintegralAdSDK/All','7.7.9'
|
||||||
# pod 'TradPlusAdSDK/PangleAdapter', '14.9.0'
|
pod 'TradPlusAdSDK/PangleAdapter', '14.9.0'
|
||||||
# pod 'Ads-Global', '7.8.0.5'
|
pod 'Ads-Global', '7.8.0.5'
|
||||||
# pod 'TradPlusAdSDK/TPCrossAdapter', '14.9.0'
|
pod 'TradPlusAdSDK/TPCrossAdapter', '14.9.0'
|
||||||
# pod 'TradPlusAdSDK/VerveAdapter', '14.9.0'
|
pod 'TradPlusAdSDK/VerveAdapter', '14.9.0'
|
||||||
# pod 'HyBid','3.7.1'
|
pod 'HyBid','3.7.1'
|
||||||
# pod 'TradPlusAdSDK/BigoAdapter', '14.9.0'
|
pod 'TradPlusAdSDK/BigoAdapter', '14.9.0'
|
||||||
# pod 'BigoADS','5.0.0'
|
pod 'BigoADS','5.0.0'
|
||||||
# pod 'TradPlusAdSDK/TaurusXAdapter', '14.9.0'
|
pod 'TradPlusAdSDK/TaurusXAdapter', '14.9.0'
|
||||||
# pod 'TaurusxAdsSDK','1.12.0'
|
pod 'TaurusxAdsSDK','1.12.0'
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
185
Podfile.lock
185
Podfile.lock
@ -4,13 +4,47 @@ PODS:
|
|||||||
- Adjust/Adjust (5.4.5):
|
- Adjust/Adjust (5.4.5):
|
||||||
- AdjustSignature (= 3.47.0)
|
- AdjustSignature (= 3.47.0)
|
||||||
- AdjustSignature (3.47.0)
|
- AdjustSignature (3.47.0)
|
||||||
|
- Ads-Global (7.8.0.5):
|
||||||
|
- Ads-Global/BUAdSDK (= 7.8.0.5)
|
||||||
|
- Ads-Global/BUAdSDK (7.8.0.5):
|
||||||
|
- Ads-Global/PangleSDK
|
||||||
|
- Ads-Global/TikTokBusinessSDK
|
||||||
|
- Ads-Global/PangleSDK (7.8.0.5)
|
||||||
|
- Ads-Global/TikTokBusinessSDK (7.8.0.5)
|
||||||
- Alamofire (5.10.2)
|
- Alamofire (5.10.2)
|
||||||
|
- AppLovinSDK (13.5.0)
|
||||||
|
- ATOM-Standalone (3.8.0)
|
||||||
|
- BigoADS (5.0.0)
|
||||||
- collection-view-layouts/Core (0.2.2)
|
- collection-view-layouts/Core (0.2.2)
|
||||||
- collection-view-layouts/TagsLayout (0.2.2):
|
- collection-view-layouts/TagsLayout (0.2.2):
|
||||||
- collection-view-layouts/Core
|
- collection-view-layouts/Core
|
||||||
|
- FBAudienceNetwork (6.20.1)
|
||||||
- FDFullscreenPopGesture (1.1)
|
- FDFullscreenPopGesture (1.1)
|
||||||
- FSPagerView (0.8.3)
|
- FSPagerView (0.8.3)
|
||||||
|
- Google-Mobile-Ads-SDK (12.14.0):
|
||||||
|
- GoogleUserMessagingPlatform (>= 1.1)
|
||||||
|
- GoogleUserMessagingPlatform (3.1.0)
|
||||||
- HWPanModal (0.9.9)
|
- HWPanModal (0.9.9)
|
||||||
|
- HyBid (3.7.1):
|
||||||
|
- HyBid/ATOM (= 3.7.1)
|
||||||
|
- HyBid/Banner (= 3.7.1)
|
||||||
|
- HyBid/Core (= 3.7.1)
|
||||||
|
- HyBid/FullScreen (= 3.7.1)
|
||||||
|
- HyBid/Native (= 3.7.1)
|
||||||
|
- HyBid/RewardedVideo (= 3.7.1)
|
||||||
|
- HyBid/ATOM (3.7.1):
|
||||||
|
- ATOM-Standalone
|
||||||
|
- HyBid/Core
|
||||||
|
- HyBid/Banner (3.7.1):
|
||||||
|
- HyBid/Core
|
||||||
|
- HyBid/Core (3.7.1)
|
||||||
|
- HyBid/FullScreen (3.7.1):
|
||||||
|
- HyBid/Core
|
||||||
|
- HyBid/Native (3.7.1):
|
||||||
|
- HyBid/Core
|
||||||
|
- HyBid/RewardedVideo (3.7.1):
|
||||||
|
- HyBid/Core
|
||||||
|
- InMobiSDK (11.1.0)
|
||||||
- IQKeyboardCore (1.0.8)
|
- IQKeyboardCore (1.0.8)
|
||||||
- IQKeyboardManagerSwift (8.0.1):
|
- IQKeyboardManagerSwift (8.0.1):
|
||||||
- IQKeyboardManagerSwift/Appearance (= 8.0.1)
|
- IQKeyboardManagerSwift/Appearance (= 8.0.1)
|
||||||
@ -49,14 +83,69 @@ PODS:
|
|||||||
- IQKeyboardCore
|
- IQKeyboardCore
|
||||||
- IQTextView (1.0.5):
|
- IQTextView (1.0.5):
|
||||||
- IQKeyboardToolbar/Placeholderable
|
- IQKeyboardToolbar/Placeholderable
|
||||||
|
- IronSourceAdQualitySDK (9.1.1)
|
||||||
|
- IronSourceSDK (9.2.0.0):
|
||||||
|
- IronSourceSDK/AdQuality (= 9.2.0.0)
|
||||||
|
- IronSourceSDK/Ads (= 9.2.0.0)
|
||||||
|
- IronSourceSDK/AdQuality (9.2.0.0):
|
||||||
|
- IronSourceAdQualitySDK (~> 9.1.1)
|
||||||
|
- IronSourceSDK/Ads (9.2.0.0)
|
||||||
- JXPagingView/Paging (2.1.3)
|
- JXPagingView/Paging (2.1.3)
|
||||||
- JXPlayer (0.2.0):
|
- JXPlayer (0.2.5):
|
||||||
- SJMediaCacheServer (= 2.1.6)
|
- SJMediaCacheServer (= 2.1.6)
|
||||||
- SJVideoPlayer (= 3.4.3)
|
- SJVideoPlayer (= 3.4.3)
|
||||||
- JXSegmentedView (1.4.1)
|
- JXSegmentedView (1.4.1)
|
||||||
- Kingfisher (8.5.0)
|
- Kingfisher (8.5.0)
|
||||||
- LYEmptyView (1.3.1)
|
- LYEmptyView (1.3.1)
|
||||||
- Masonry (1.1.0)
|
- Masonry (1.1.0)
|
||||||
|
- MintegralAdSDK (7.7.9):
|
||||||
|
- MintegralAdSDK/BannerAd (= 7.7.9)
|
||||||
|
- MintegralAdSDK/BidBannerAd (= 7.7.9)
|
||||||
|
- MintegralAdSDK/BidInterstitialVideoAd (= 7.7.9)
|
||||||
|
- MintegralAdSDK/BidNativeAd (= 7.7.9)
|
||||||
|
- MintegralAdSDK/BidNewInterstitialAd (= 7.7.9)
|
||||||
|
- MintegralAdSDK/BidRewardVideoAd (= 7.7.9)
|
||||||
|
- MintegralAdSDK/InterstitialVideoAd (= 7.7.9)
|
||||||
|
- MintegralAdSDK/NativeAd (= 7.7.9)
|
||||||
|
- MintegralAdSDK/NewInterstitialAd (= 7.7.9)
|
||||||
|
- MintegralAdSDK/RewardVideoAd (= 7.7.9)
|
||||||
|
- MintegralAdSDK/All (7.7.9):
|
||||||
|
- MintegralAdSDK/BannerAd
|
||||||
|
- MintegralAdSDK/BidNativeAd
|
||||||
|
- MintegralAdSDK/InterstitialVideoAd
|
||||||
|
- MintegralAdSDK/NativeAd
|
||||||
|
- MintegralAdSDK/NativeAdvancedAd
|
||||||
|
- MintegralAdSDK/NewInterstitialAd
|
||||||
|
- MintegralAdSDK/RewardVideoAd
|
||||||
|
- MintegralAdSDK/SplashAd
|
||||||
|
- MintegralAdSDK/BannerAd (7.7.9):
|
||||||
|
- MintegralAdSDK/NativeAd
|
||||||
|
- MintegralAdSDK/BidBannerAd (7.7.9):
|
||||||
|
- MintegralAdSDK/BannerAd
|
||||||
|
- MintegralAdSDK/BidNativeAd
|
||||||
|
- MintegralAdSDK/BidInterstitialVideoAd (7.7.9):
|
||||||
|
- MintegralAdSDK/BidNativeAd
|
||||||
|
- MintegralAdSDK/InterstitialVideoAd
|
||||||
|
- MintegralAdSDK/BidNativeAd (7.7.9):
|
||||||
|
- MintegralAdSDK/NativeAd
|
||||||
|
- MintegralAdSDK/BidNewInterstitialAd (7.7.9):
|
||||||
|
- MintegralAdSDK/BidNativeAd
|
||||||
|
- MintegralAdSDK/NewInterstitialAd
|
||||||
|
- MintegralAdSDK/BidRewardVideoAd (7.7.9):
|
||||||
|
- MintegralAdSDK/BidNativeAd
|
||||||
|
- MintegralAdSDK/RewardVideoAd
|
||||||
|
- MintegralAdSDK/InterstitialVideoAd (7.7.9):
|
||||||
|
- MintegralAdSDK/NativeAd
|
||||||
|
- MintegralAdSDK/NativeAd (7.7.9)
|
||||||
|
- MintegralAdSDK/NativeAdvancedAd (7.7.9):
|
||||||
|
- MintegralAdSDK/NativeAd
|
||||||
|
- MintegralAdSDK/NewInterstitialAd (7.7.9):
|
||||||
|
- MintegralAdSDK/InterstitialVideoAd
|
||||||
|
- MintegralAdSDK/NativeAd
|
||||||
|
- MintegralAdSDK/RewardVideoAd (7.7.9):
|
||||||
|
- MintegralAdSDK/NativeAd
|
||||||
|
- MintegralAdSDK/SplashAd (7.7.9):
|
||||||
|
- MintegralAdSDK/NativeAd
|
||||||
- MJRefresh (3.7.9)
|
- MJRefresh (3.7.9)
|
||||||
- SJBaseVideoPlayer (3.7.7.1):
|
- SJBaseVideoPlayer (3.7.7.1):
|
||||||
- Masonry
|
- Masonry
|
||||||
@ -129,7 +218,30 @@ PODS:
|
|||||||
- SVProgressHUD (2.3.1):
|
- SVProgressHUD (2.3.1):
|
||||||
- SVProgressHUD/Core (= 2.3.1)
|
- SVProgressHUD/Core (= 2.3.1)
|
||||||
- SVProgressHUD/Core (2.3.1)
|
- SVProgressHUD/Core (2.3.1)
|
||||||
|
- TaurusxAdsSDK (1.12.0):
|
||||||
|
- TaurusxAdsSDK/TaurusxAds (= 1.12.0)
|
||||||
|
- TaurusxAdsSDK/TaurusxAds (1.12.0)
|
||||||
- Toast (4.1.1)
|
- Toast (4.1.1)
|
||||||
|
- TPExchange (13.8.30)
|
||||||
|
- TradPlusAdSDK (14.9.0):
|
||||||
|
- TradPlusAdSDK/TradPlusAds (= 14.9.0)
|
||||||
|
- TradPlusAdSDK/AdMobAdapter (14.9.0)
|
||||||
|
- TradPlusAdSDK/AppLovinAdapter (14.9.0)
|
||||||
|
- TradPlusAdSDK/BigoAdapter (14.9.0)
|
||||||
|
- TradPlusAdSDK/FacebookAdapter (14.9.0)
|
||||||
|
- TradPlusAdSDK/InMobiAdapter (14.9.0)
|
||||||
|
- TradPlusAdSDK/IronSourceAdapter (14.9.0)
|
||||||
|
- TradPlusAdSDK/MintegralAdapter (14.9.0)
|
||||||
|
- TradPlusAdSDK/PangleAdapter (14.9.0)
|
||||||
|
- TradPlusAdSDK/TaurusXAdapter (14.9.0)
|
||||||
|
- TradPlusAdSDK/TPCrossAdapter (14.9.0)
|
||||||
|
- TradPlusAdSDK/TradPlusAds (14.9.0):
|
||||||
|
- TPExchange (= 13.8.30)
|
||||||
|
- TradPlusAdSDK/UnityAdapter (14.9.0)
|
||||||
|
- TradPlusAdSDK/VerveAdapter (14.9.0)
|
||||||
|
- TradPlusAdSDK/VungleAdapter (14.9.0)
|
||||||
|
- UnityAds (4.16.4)
|
||||||
|
- VungleAds (7.6.1)
|
||||||
- YYCategories (1.0.4):
|
- YYCategories (1.0.4):
|
||||||
- YYCategories/no-arc (= 1.0.4)
|
- YYCategories/no-arc (= 1.0.4)
|
||||||
- YYCategories/no-arc (1.0.4)
|
- YYCategories/no-arc (1.0.4)
|
||||||
@ -141,22 +253,49 @@ PODS:
|
|||||||
|
|
||||||
DEPENDENCIES:
|
DEPENDENCIES:
|
||||||
- Adjust
|
- Adjust
|
||||||
|
- Ads-Global (= 7.8.0.5)
|
||||||
- Alamofire
|
- Alamofire
|
||||||
|
- AppLovinSDK (= 13.5.0)
|
||||||
|
- BigoADS (= 5.0.0)
|
||||||
- collection-view-layouts/TagsLayout
|
- collection-view-layouts/TagsLayout
|
||||||
|
- FBAudienceNetwork (= 6.20.1)
|
||||||
- FDFullscreenPopGesture
|
- FDFullscreenPopGesture
|
||||||
- FSPagerView
|
- FSPagerView
|
||||||
|
- Google-Mobile-Ads-SDK (= 12.14.0)
|
||||||
- HWPanModal
|
- HWPanModal
|
||||||
|
- HyBid (= 3.7.1)
|
||||||
|
- InMobiSDK (= 11.1.0)
|
||||||
- IQKeyboardManagerSwift
|
- IQKeyboardManagerSwift
|
||||||
|
- IronSourceSDK (= 9.2.0)
|
||||||
- JXPagingView/Paging
|
- JXPagingView/Paging
|
||||||
- JXPlayer (from `https://github.com/zengjuexin/JXPlayer.git`, tag `0.2.0`)
|
- JXPlayer (from `https://github.com/zengjuexin/JXPlayer.git`, tag `0.2.5`)
|
||||||
- JXSegmentedView
|
- JXSegmentedView
|
||||||
- Kingfisher
|
- Kingfisher
|
||||||
- LYEmptyView
|
- LYEmptyView
|
||||||
|
- MintegralAdSDK (= 7.7.9)
|
||||||
|
- MintegralAdSDK/All (= 7.7.9)
|
||||||
- MJRefresh
|
- MJRefresh
|
||||||
- SmartCodable
|
- SmartCodable
|
||||||
- SnapKit
|
- SnapKit
|
||||||
- SVProgressHUD
|
- SVProgressHUD
|
||||||
|
- TaurusxAdsSDK (= 1.12.0)
|
||||||
- Toast
|
- Toast
|
||||||
|
- TradPlusAdSDK (= 14.9.0)
|
||||||
|
- TradPlusAdSDK/AdMobAdapter (= 14.9.0)
|
||||||
|
- TradPlusAdSDK/AppLovinAdapter (= 14.9.0)
|
||||||
|
- TradPlusAdSDK/BigoAdapter (= 14.9.0)
|
||||||
|
- TradPlusAdSDK/FacebookAdapter (= 14.9.0)
|
||||||
|
- TradPlusAdSDK/InMobiAdapter (= 14.9.0)
|
||||||
|
- TradPlusAdSDK/IronSourceAdapter (= 14.9.0)
|
||||||
|
- TradPlusAdSDK/MintegralAdapter (= 14.9.0)
|
||||||
|
- TradPlusAdSDK/PangleAdapter (= 14.9.0)
|
||||||
|
- TradPlusAdSDK/TaurusXAdapter (= 14.9.0)
|
||||||
|
- TradPlusAdSDK/TPCrossAdapter (= 14.9.0)
|
||||||
|
- TradPlusAdSDK/UnityAdapter (= 14.9.0)
|
||||||
|
- TradPlusAdSDK/VerveAdapter (= 14.9.0)
|
||||||
|
- TradPlusAdSDK/VungleAdapter (= 14.9.0)
|
||||||
|
- UnityAds (= 4.16.4)
|
||||||
|
- VungleAds (= 7.6.1)
|
||||||
- YYCategories
|
- YYCategories
|
||||||
- YYText
|
- YYText
|
||||||
- ZLPhotoBrowser
|
- ZLPhotoBrowser
|
||||||
@ -165,11 +304,20 @@ SPEC REPOS:
|
|||||||
https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git:
|
https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git:
|
||||||
- Adjust
|
- Adjust
|
||||||
- AdjustSignature
|
- AdjustSignature
|
||||||
|
- Ads-Global
|
||||||
- Alamofire
|
- Alamofire
|
||||||
|
- AppLovinSDK
|
||||||
|
- ATOM-Standalone
|
||||||
|
- BigoADS
|
||||||
- collection-view-layouts
|
- collection-view-layouts
|
||||||
|
- FBAudienceNetwork
|
||||||
- FDFullscreenPopGesture
|
- FDFullscreenPopGesture
|
||||||
- FSPagerView
|
- FSPagerView
|
||||||
|
- Google-Mobile-Ads-SDK
|
||||||
|
- GoogleUserMessagingPlatform
|
||||||
- HWPanModal
|
- HWPanModal
|
||||||
|
- HyBid
|
||||||
|
- InMobiSDK
|
||||||
- IQKeyboardCore
|
- IQKeyboardCore
|
||||||
- IQKeyboardManagerSwift
|
- IQKeyboardManagerSwift
|
||||||
- IQKeyboardNotification
|
- IQKeyboardNotification
|
||||||
@ -178,11 +326,14 @@ SPEC REPOS:
|
|||||||
- IQKeyboardToolbarManager
|
- IQKeyboardToolbarManager
|
||||||
- IQTextInputViewNotification
|
- IQTextInputViewNotification
|
||||||
- IQTextView
|
- IQTextView
|
||||||
|
- IronSourceAdQualitySDK
|
||||||
|
- IronSourceSDK
|
||||||
- JXPagingView
|
- JXPagingView
|
||||||
- JXSegmentedView
|
- JXSegmentedView
|
||||||
- Kingfisher
|
- Kingfisher
|
||||||
- LYEmptyView
|
- LYEmptyView
|
||||||
- Masonry
|
- Masonry
|
||||||
|
- MintegralAdSDK
|
||||||
- MJRefresh
|
- MJRefresh
|
||||||
- SJBaseVideoPlayer
|
- SJBaseVideoPlayer
|
||||||
- SJMediaCacheServer
|
- SJMediaCacheServer
|
||||||
@ -191,7 +342,12 @@ SPEC REPOS:
|
|||||||
- SmartCodable
|
- SmartCodable
|
||||||
- SnapKit
|
- SnapKit
|
||||||
- SVProgressHUD
|
- SVProgressHUD
|
||||||
|
- TaurusxAdsSDK
|
||||||
- Toast
|
- Toast
|
||||||
|
- TPExchange
|
||||||
|
- TradPlusAdSDK
|
||||||
|
- UnityAds
|
||||||
|
- VungleAds
|
||||||
- YYCategories
|
- YYCategories
|
||||||
- YYModel
|
- YYModel
|
||||||
- YYText
|
- YYText
|
||||||
@ -200,21 +356,30 @@ SPEC REPOS:
|
|||||||
EXTERNAL SOURCES:
|
EXTERNAL SOURCES:
|
||||||
JXPlayer:
|
JXPlayer:
|
||||||
:git: https://github.com/zengjuexin/JXPlayer.git
|
:git: https://github.com/zengjuexin/JXPlayer.git
|
||||||
:tag: 0.2.0
|
:tag: 0.2.5
|
||||||
|
|
||||||
CHECKOUT OPTIONS:
|
CHECKOUT OPTIONS:
|
||||||
JXPlayer:
|
JXPlayer:
|
||||||
:git: https://github.com/zengjuexin/JXPlayer.git
|
:git: https://github.com/zengjuexin/JXPlayer.git
|
||||||
:tag: 0.2.0
|
:tag: 0.2.5
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
Adjust: 010c8b2b582add6ba200469c82c4d8c9e5ddb198
|
Adjust: 010c8b2b582add6ba200469c82c4d8c9e5ddb198
|
||||||
AdjustSignature: d634fc6b66295c38807f3b4e50978c1f72355950
|
AdjustSignature: d634fc6b66295c38807f3b4e50978c1f72355950
|
||||||
|
Ads-Global: f4958eaa8e92b32a05fab125fed7822be81cf878
|
||||||
Alamofire: 7193b3b92c74a07f85569e1a6c4f4237291e7496
|
Alamofire: 7193b3b92c74a07f85569e1a6c4f4237291e7496
|
||||||
|
AppLovinSDK: bf8974163120910e6b902e9610e7c5a2c0f577b6
|
||||||
|
ATOM-Standalone: ad17f0d0e60b22f67ed99e5a336425d68d324f3e
|
||||||
|
BigoADS: 789ca51394adb1adb405e7e01ec8e43d3dc14f15
|
||||||
collection-view-layouts: 474ec4cce601a26247737227a97fa6a4eb30213f
|
collection-view-layouts: 474ec4cce601a26247737227a97fa6a4eb30213f
|
||||||
|
FBAudienceNetwork: 08e86d63a05b3a5a59414af12e4af8d756943c80
|
||||||
FDFullscreenPopGesture: a8a620179e3d9c40e8e00256dcee1c1a27c6d0f0
|
FDFullscreenPopGesture: a8a620179e3d9c40e8e00256dcee1c1a27c6d0f0
|
||||||
FSPagerView: 670405b2f18e2a87fa37f20b00de783e562c25a8
|
FSPagerView: 670405b2f18e2a87fa37f20b00de783e562c25a8
|
||||||
|
Google-Mobile-Ads-SDK: 4534fd2dfcd3f705c5485a6633c5188d03d4eed2
|
||||||
|
GoogleUserMessagingPlatform: befe603da6501006420c206222acd449bba45a9c
|
||||||
HWPanModal: b57a6717d3cdcd666bff44f9dd2a5be9f4d6f5d2
|
HWPanModal: b57a6717d3cdcd666bff44f9dd2a5be9f4d6f5d2
|
||||||
|
HyBid: c75fa40e2d209aaed25b60f7bcd0e408d294c19e
|
||||||
|
InMobiSDK: 43b1d6560bd75c8c382bb54fa8e248f5ed979860
|
||||||
IQKeyboardCore: 8652977ec919cf5351aa2977fedd1a6546476fbc
|
IQKeyboardCore: 8652977ec919cf5351aa2977fedd1a6546476fbc
|
||||||
IQKeyboardManagerSwift: 835fc9c6e4732398113406d84900ad2e8f141218
|
IQKeyboardManagerSwift: 835fc9c6e4732398113406d84900ad2e8f141218
|
||||||
IQKeyboardNotification: eb4910401f5a0e68f97e71c62f8a0c5b7e9d535c
|
IQKeyboardNotification: eb4910401f5a0e68f97e71c62f8a0c5b7e9d535c
|
||||||
@ -223,12 +388,15 @@ SPEC CHECKSUMS:
|
|||||||
IQKeyboardToolbarManager: c8a575e8b5fffe5873d0e75312244498a0759473
|
IQKeyboardToolbarManager: c8a575e8b5fffe5873d0e75312244498a0759473
|
||||||
IQTextInputViewNotification: 3b9fb27a16e7ee8958cc9092cfb07a1a9e1fd559
|
IQTextInputViewNotification: 3b9fb27a16e7ee8958cc9092cfb07a1a9e1fd559
|
||||||
IQTextView: ae13b4922f22e6f027f62c557d9f4f236b19d5c7
|
IQTextView: ae13b4922f22e6f027f62c557d9f4f236b19d5c7
|
||||||
|
IronSourceAdQualitySDK: 56314ade811a5226f76dfd377bc09aca0d6610c0
|
||||||
|
IronSourceSDK: 66e1483cd62fb63162a965651f6f41c6b91664db
|
||||||
JXPagingView: afdd2e9af09c90160dd232b970d603cc6e7ddd0e
|
JXPagingView: afdd2e9af09c90160dd232b970d603cc6e7ddd0e
|
||||||
JXPlayer: 3064f658b71cba7f0db4098e618f11f5d8dce61a
|
JXPlayer: cba8901329a005116828676a0887302f112b8ffe
|
||||||
JXSegmentedView: cd73555ce2134d1656db2cb383ba9c2f36fb5078
|
JXSegmentedView: cd73555ce2134d1656db2cb383ba9c2f36fb5078
|
||||||
Kingfisher: ff0d31a1f07bdff6a1ebb3ba08b8e6e567b6500c
|
Kingfisher: ff0d31a1f07bdff6a1ebb3ba08b8e6e567b6500c
|
||||||
LYEmptyView: b6d418cfa38b78df0cf243f9a9c25ccbdc399922
|
LYEmptyView: b6d418cfa38b78df0cf243f9a9c25ccbdc399922
|
||||||
Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
|
Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
|
||||||
|
MintegralAdSDK: 054814f99bb7e967b8974fe635d9005b225cbe42
|
||||||
MJRefresh: ff9e531227924c84ce459338414550a05d2aea78
|
MJRefresh: ff9e531227924c84ce459338414550a05d2aea78
|
||||||
SJBaseVideoPlayer: b3122de12225b27b71bd9a8a1f08f4dcf2f4e5ec
|
SJBaseVideoPlayer: b3122de12225b27b71bd9a8a1f08f4dcf2f4e5ec
|
||||||
SJMediaCacheServer: f6cd08ff32f5c6fc18ff06e676b42d6c17ce4cf1
|
SJMediaCacheServer: f6cd08ff32f5c6fc18ff06e676b42d6c17ce4cf1
|
||||||
@ -237,12 +405,17 @@ SPEC CHECKSUMS:
|
|||||||
SmartCodable: 545dd052990fe7e80085463b79a1a5e462ee29ff
|
SmartCodable: 545dd052990fe7e80085463b79a1a5e462ee29ff
|
||||||
SnapKit: d612e99e678a2d3b95bf60b0705ed0a35c03484a
|
SnapKit: d612e99e678a2d3b95bf60b0705ed0a35c03484a
|
||||||
SVProgressHUD: 4837c74bdfe2e51e8821c397825996a8d7de6e22
|
SVProgressHUD: 4837c74bdfe2e51e8821c397825996a8d7de6e22
|
||||||
|
TaurusxAdsSDK: 6eed5ca3a64dcaeea3929bd483c7073fd7cf0628
|
||||||
Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e
|
Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e
|
||||||
|
TPExchange: 41f39ebc014788b277bc78030f6ef2585a5c4460
|
||||||
|
TradPlusAdSDK: 980b0feda31e25e1b8ec0f6481d43d7f2be1b39a
|
||||||
|
UnityAds: 91a5d786c1e79fcbf702c525af4700158aeb36c8
|
||||||
|
VungleAds: ab78d62721933672a83efcf7d2de8ae0610494be
|
||||||
YYCategories: 6bcd4314c6661a561410dce4a793379ebd306abd
|
YYCategories: 6bcd4314c6661a561410dce4a793379ebd306abd
|
||||||
YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
|
YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
|
||||||
YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
|
YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
|
||||||
ZLPhotoBrowser: d5928f08485c90a0b349a3a1e804e82c83ccf193
|
ZLPhotoBrowser: d5928f08485c90a0b349a3a1e804e82c83ccf193
|
||||||
|
|
||||||
PODFILE CHECKSUM: 7f9d52a2d48e07bbe3da45c9c5f8da06c21e4c9a
|
PODFILE CHECKSUM: 9672d978b276fa38f2109ff21ced81fa77aa357c
|
||||||
|
|
||||||
COCOAPODS: 1.16.2
|
COCOAPODS: 1.16.2
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user