1.2.4 loft广告适配
This commit is contained in:
parent
f6bffda000
commit
0456fbecf0
@ -1927,7 +1927,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
CURRENT_PROJECT_VERSION = 1.2.3.1;
|
CURRENT_PROJECT_VERSION = 1.2.4.1;
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = RAQJ4FNZUH;
|
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = RAQJ4FNZUH;
|
||||||
@ -1948,7 +1948,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.2.3;
|
MARKETING_VERSION = 1.2.4;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = relax.offline.mp3.music;
|
PRODUCT_BUNDLE_IDENTIFIER = relax.offline.mp3.music;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@ -1973,7 +1973,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
CURRENT_PROJECT_VERSION = 1.2.3.1;
|
CURRENT_PROJECT_VERSION = 1.2.4.1;
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = RAQJ4FNZUH;
|
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = RAQJ4FNZUH;
|
||||||
@ -1994,7 +1994,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.2.3;
|
MARKETING_VERSION = 1.2.4;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = relax.offline.mp3.music;
|
PRODUCT_BUNDLE_IDENTIFIER = relax.offline.mp3.music;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
|||||||
Binary file not shown.
@ -27,14 +27,16 @@ class MPPositive_Debouncer: NSObject {
|
|||||||
timer?.invalidate()
|
timer?.invalidate()
|
||||||
timer = nil
|
timer = nil
|
||||||
// 设置新的延迟调用
|
// 设置新的延迟调用
|
||||||
timer = Timer.scheduledTimer(withTimeInterval: delay, repeats: false) { _ in
|
timer = Timer.scheduledTimer(withTimeInterval: delay, repeats: false) {[weak self] _ in
|
||||||
|
guard let _ = self else { return }
|
||||||
action()
|
action()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func playCall(_ action:@escaping (() -> Void)) {
|
func playCall(_ action:@escaping (() -> Void)) {
|
||||||
playerTimer?.invalidate()
|
playerTimer?.invalidate()
|
||||||
playerTimer = nil
|
playerTimer = nil
|
||||||
playerTimer = Timer.scheduledTimer(withTimeInterval: 10, repeats: false) { _ in
|
playerTimer = Timer.scheduledTimer(withTimeInterval: 10, repeats: false) {[weak self] _ in
|
||||||
|
guard let _ = self else { return }
|
||||||
action()
|
action()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1725,7 +1725,9 @@ class MP_AdMobManager: NSObject, GADAudioVideoManagerDelegate, GADFullScreenCont
|
|||||||
completeGlobalInterstitialAdBlock!()
|
completeGlobalInterstitialAdBlock!()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
DispatchQueue.main.asyncAfter(deadline: .now()+0.1) {
|
||||||
|
accessAppdelegate.setAudioActive()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//覆盖型广告加载出错
|
//覆盖型广告加载出错
|
||||||
func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
|
func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
|
||||||
@ -1781,7 +1783,9 @@ class MP_AdMobManager: NSObject, GADAudioVideoManagerDelegate, GADFullScreenCont
|
|||||||
completeGlobalInterstitialAdBlock!()
|
completeGlobalInterstitialAdBlock!()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
DispatchQueue.main.asyncAfter(deadline: .now()+0.1) {
|
||||||
|
accessAppdelegate.setAudioActive()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//MARK: - GADNativeAdLoaderDelegate
|
//MARK: - GADNativeAdLoaderDelegate
|
||||||
// 原生广告已加载,可以展示。
|
// 原生广告已加载,可以展示。
|
||||||
|
|||||||
@ -426,7 +426,6 @@ class MP_AnalyticsManager: NSObject {
|
|||||||
}
|
}
|
||||||
///IP被拉黑
|
///IP被拉黑
|
||||||
func resource_IP_blackAction() {
|
func resource_IP_blackAction() {
|
||||||
|
|
||||||
var parameters:[String:String] = [:]
|
var parameters:[String:String] = [:]
|
||||||
if let ipInfo = UserDefaults.standard.object(forKey: "IP_Info") as? String {
|
if let ipInfo = UserDefaults.standard.object(forKey: "IP_Info") as? String {
|
||||||
parameters["ip"] = ipInfo
|
parameters["ip"] = ipInfo
|
||||||
|
|||||||
@ -829,6 +829,9 @@ extension MP_AppLovinManager: MAAdDelegate {
|
|||||||
block()
|
block()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
DispatchQueue.main.asyncAfter(deadline: .now()+0.1) {
|
||||||
|
accessAppdelegate.setAudioActive()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//广告点击
|
//广告点击
|
||||||
func didClick(_ ad: MAAd) {
|
func didClick(_ ad: MAAd) {
|
||||||
|
|||||||
@ -27,7 +27,11 @@ class MPPositive_CustomPlayListModel: NSManagedObject, MP_CoreDataManageableDele
|
|||||||
extension MPPositive_CustomPlayListModel {
|
extension MPPositive_CustomPlayListModel {
|
||||||
///将videos转为[MPPositive_CustomVideoModel]
|
///将videos转为[MPPositive_CustomVideoModel]
|
||||||
var videosArray:[MPPositive_CustomVideoModel]{
|
var videosArray:[MPPositive_CustomVideoModel]{
|
||||||
let set = videos as? Set<MPPositive_CustomVideoModel> ?? []
|
// 明确告诉 Core Data 将要访问属性
|
||||||
|
self.willAccessValue(forKey: "videos")
|
||||||
|
let set = (videos as? Set<MPPositive_CustomVideoModel>)?.compactMap { $0 } ?? []
|
||||||
|
// 告诉 Core Data 已经访问完属性
|
||||||
|
self.didAccessValue(forKey: "videos")
|
||||||
//转化成数组模型并进行排序(根据添加时间决定顺序)
|
//转化成数组模型并进行排序(根据添加时间决定顺序)
|
||||||
let array = Array(set).sorted { item1, item2 in
|
let array = Array(set).sorted { item1, item2 in
|
||||||
|
|
||||||
|
|||||||
@ -102,7 +102,7 @@ class MPPositive_MoreSongOperationsViewController: UIViewController, UIViewContr
|
|||||||
// MP_HUD.loading()
|
// MP_HUD.loading()
|
||||||
//发起网络请求补全数据
|
//发起网络请求补全数据
|
||||||
MP_NetWorkManager.shared.requestNextList(browseViewModel.browseItem.playListId ?? "", videoId: browseViewModel.browseItem.videoId ?? "", clickTrackingParams: browseViewModel.browseItem.clickTrackingParams) { [weak self] listSongs in
|
MP_NetWorkManager.shared.requestNextList(browseViewModel.browseItem.playListId ?? "", videoId: browseViewModel.browseItem.videoId ?? "", clickTrackingParams: browseViewModel.browseItem.clickTrackingParams) { [weak self] listSongs in
|
||||||
guard let first = listSongs.first else {return}
|
guard let first = listSongs.first(where: {$0.videoId == (browseViewModel.browseItem.videoId ?? "")}) else {return}
|
||||||
let group = DispatchGroup()
|
let group = DispatchGroup()
|
||||||
group.enter()
|
group.enter()
|
||||||
improveDataforLycirsAndRelated(first) {[weak self] (result) in
|
improveDataforLycirsAndRelated(first) {[weak self] (result) in
|
||||||
@ -142,7 +142,7 @@ class MPPositive_MoreSongOperationsViewController: UIViewController, UIViewContr
|
|||||||
// MP_HUD.loading()
|
// MP_HUD.loading()
|
||||||
//发起网络请求补全数据
|
//发起网络请求补全数据
|
||||||
MP_NetWorkManager.shared.requestNextList(searchResultItemViewModel.item.playListId ?? "", videoId: searchResultItemViewModel.item.videoId ?? "", clickTrackingParams: searchResultItemViewModel.item.clickTrackingParams) { [weak self] listSongs in
|
MP_NetWorkManager.shared.requestNextList(searchResultItemViewModel.item.playListId ?? "", videoId: searchResultItemViewModel.item.videoId ?? "", clickTrackingParams: searchResultItemViewModel.item.clickTrackingParams) { [weak self] listSongs in
|
||||||
guard let first = listSongs.first else {return}
|
guard let first = listSongs.first(where: {$0.videoId == searchResultItemViewModel.item.videoId}) else {return}
|
||||||
let group = DispatchGroup()
|
let group = DispatchGroup()
|
||||||
group.enter()
|
group.enter()
|
||||||
improveDataforLycirsAndRelated(first) {[weak self] (result) in
|
improveDataforLycirsAndRelated(first) {[weak self] (result) in
|
||||||
@ -182,7 +182,7 @@ class MPPositive_MoreSongOperationsViewController: UIViewController, UIViewContr
|
|||||||
// MP_HUD.loading()
|
// MP_HUD.loading()
|
||||||
//发起网络请求补全数据
|
//发起网络请求补全数据
|
||||||
MP_NetWorkManager.shared.requestNextList("", videoId: collectionSongViewModel.collectionSong.videoId ?? "", clickTrackingParams: nil){ [weak self] listSongs in
|
MP_NetWorkManager.shared.requestNextList("", videoId: collectionSongViewModel.collectionSong.videoId ?? "", clickTrackingParams: nil){ [weak self] listSongs in
|
||||||
guard let first = listSongs.first else {return}
|
guard let first = listSongs.first(where: {$0.videoId == collectionSongViewModel.collectionSong.videoId}) else {return}
|
||||||
let group = DispatchGroup()
|
let group = DispatchGroup()
|
||||||
group.enter()
|
group.enter()
|
||||||
improveDataforLycirsAndRelated(first) {[weak self] (result) in
|
improveDataforLycirsAndRelated(first) {[weak self] (result) in
|
||||||
@ -223,7 +223,7 @@ class MPPositive_MoreSongOperationsViewController: UIViewController, UIViewContr
|
|||||||
// MP_HUD.loading()
|
// MP_HUD.loading()
|
||||||
//发起网络请求补全数据
|
//发起网络请求补全数据
|
||||||
MP_NetWorkManager.shared.requestNextList("", videoId: video?.videoId ?? "", clickTrackingParams: nil){ [weak self] listSongs in
|
MP_NetWorkManager.shared.requestNextList("", videoId: video?.videoId ?? "", clickTrackingParams: nil){ [weak self] listSongs in
|
||||||
guard let first = listSongs.first else {return}
|
guard let first = listSongs.first(where: {$0.videoId == video?.videoId}) else {return}
|
||||||
let group = DispatchGroup()
|
let group = DispatchGroup()
|
||||||
group.enter()
|
group.enter()
|
||||||
improveDataforLycirsAndRelated(first) {[weak self] (result) in
|
improveDataforLycirsAndRelated(first) {[weak self] (result) in
|
||||||
|
|||||||
@ -244,7 +244,9 @@ extension MPPositive_TabBarController {
|
|||||||
block()
|
block()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
DispatchQueue.main.asyncAfter(deadline: .now()+0.1) {
|
||||||
|
accessAppdelegate.setAudioActive()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//覆盖型广告加载出错
|
//覆盖型广告加载出错
|
||||||
func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
|
func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
|
||||||
@ -259,7 +261,9 @@ extension MPPositive_TabBarController {
|
|||||||
MP_AdMobManager.shared.completePlayInterstitialAdBlock!()
|
MP_AdMobManager.shared.completePlayInterstitialAdBlock!()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
DispatchQueue.main.asyncAfter(deadline: .now()+0.1) {
|
||||||
|
accessAppdelegate.setAudioActive()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//MARK: - AppLovin
|
//MARK: - AppLovin
|
||||||
func didLoad(_ ad: MAAd) {
|
func didLoad(_ ad: MAAd) {
|
||||||
@ -289,6 +293,9 @@ extension MPPositive_TabBarController {
|
|||||||
block()
|
block()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
DispatchQueue.main.asyncAfter(deadline: .now()+0.1) {
|
||||||
|
accessAppdelegate.setAudioActive()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func didClick(_ ad: MAAd) {
|
func didClick(_ ad: MAAd) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user