延迟深度链接开发,充值页面排序开发,1.1.2提审

This commit is contained in:
zeng 2025-06-26 14:40:11 +08:00
parent 1588233050
commit 6e4051494e
8 changed files with 97 additions and 41 deletions

View File

@ -9,6 +9,7 @@ import UIKit
#if canImport(FacebookCore)
import FacebookCore
#endif
import AdjustSdk
extension SceneDelegate {
@ -24,6 +25,9 @@ extension SceneDelegate {
result = ApplicationDelegate.shared.application(UIApplication.shared, open: url, sourceApplication: nil, annotation: [UIApplication.OpenURLOptionsKey.annotation])
#endif
if !result {
if let link = ADJDeeplink(deeplink: url) {
Adjust.processDeeplink(link)
}
handleOpenAppMessage(webpageURL: url)
}
@ -32,15 +36,19 @@ extension SceneDelegate {
///UniversalLink app
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
guard let webpageURL = userActivity.webpageURL else { return }
let result = ApplicationDelegate.shared.application(UIApplication.shared, continue: userActivity)
if !result {
handleOpenAppMessage(webpageURL: webpageURL)
}
}
}
extension SceneDelegate {
static var hasOpenMessage = false
///(APP)
static var allowOpenMessage = true
///
static var isNeedRetry = false
@ -48,7 +56,7 @@ extension SceneDelegate {
func handleOpenAppMessage(webpageURL: URL?) {
guard SPNetworkReachabilityManager.manager.isReachable == true,
AppDelegate.haveBeenShownAPNS,
// AppDelegate.haveBeenShownAPNS,
SPAPPTool.isAppOpen,
SPAPPTool.idfaAuthorizationFinish //idfa
else {
@ -74,21 +82,15 @@ extension SceneDelegate {
}
private func _handleOpenAppMessage(webpageURL: URL?) {
if !SPAPPTool.isAppOpen { return }
if Self.hasOpenMessage { return }
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
Self.hasOpenMessage = false
}
Self.hasOpenMessage = true
guard SceneDelegate.allowOpenMessage else { return }
SceneDelegate.allowOpenMessage = false
//URL
var statUrlStr: String?
var data: [String : Any]?
var statUrlStr: String? = webpageURL?.absoluteString
var data: [String : Any]? = webpageURL?.query?.urlQuryToDictionary()
if let pasteStr = UIPasteboard.general.string, pasteStr.contains("movia") {
UIPasteboard.general.string = nil
if statUrlStr == nil, let pasteStr = UIPasteboard.general.string, pasteStr.contains("movia") {
let tempArr = pasteStr.components(separatedBy: "?")
let query = tempArr.last
@ -98,13 +100,7 @@ extension SceneDelegate {
statUrlStr = pasteStr
}
}
if data == nil {
data = webpageURL?.query?.urlQuryToDictionary()
statUrlStr = webpageURL?.absoluteString
}
UIPasteboard.general.string = nil
if let urlStr = statUrlStr {//
SPStatAPI.requestStatW2a(data: urlStr)

View File

@ -22,12 +22,32 @@ extension AppDelegate {
registAdjust()
///
MJRefreshConfig.default.languageCode = SPLocalizedManager.shared.mjLocalizedKey
AppLinkUtility.fetchDeferredAppLink { url, error in
if let url = url, error != nil {
SPAPPTool.sceneDelegate?.handleOpenAppMessage(webpageURL: url)
}
}
}
private func registAdjust() {
#if DEBUG
let config = ADJConfig(appToken: "7z38v0rvceww", environment: ADJEnvironmentSandbox)
config?.logLevel = .verbose
#else
let config = ADJConfig(appToken: "7z38v0rvceww", environment: ADJEnvironmentProduction)
#endif
config?.delegate = self
Adjust.initSdk(config)
}
}
//MARK: -------------- AdjustDelegate --------------
extension AppDelegate: AdjustDelegate {
func adjustDeferredDeeplinkReceived(_ deeplink: URL?) -> Bool {
return true
}
}

View File

@ -76,6 +76,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
// Called as the scene transitions from the foreground to the background.
// Use this method to save data, release shared resources, and store enough scene-specific state information
// to restore the scene back to its current state.
SceneDelegate.allowOpenMessage = true
}

View File

@ -84,7 +84,6 @@ extension SPApi: TargetType {
"lang-key" : SPLocalizedManager.shared.currentLocalizedKey,//
"time-zone" : String.timeZone(), //
"app-version" : kSPAPPVersion,
// "device-id" : JXUUID.systemUUID(), //id
"device-id" : JXUUID.uuid(), //id
"brand" : "apple", //
"app-name" : kSPAPPBundleIdentifier,

View File

@ -62,7 +62,8 @@ class SPWebView: WKWebView {
func load(urlStr: String) {
guard let url = URL(string: urlStr) else { return }
var request = URLRequest(url: url, cachePolicy: .reloadIgnoringLocalCacheData, timeoutInterval: 30)
// var request = URLRequest(url: url, cachePolicy: .reloadIgnoringLocalCacheData, timeoutInterval: 30)
var request = URLRequest(url: url, cachePolicy: .returnCacheDataElseLoad, timeoutInterval: 30)
self.load(request)
}

View File

@ -250,15 +250,17 @@ extension SPPlayBuyView {
guard let self = self else { return }
self.stackView.removeAllArrangedSubview()
if let list = templateModel?.list_sub_vip, list.count > 0 {
self.memberView.setDataArr(dataArr: templateModel?.list_sub_vip)
self.stackView.addArrangedSubview(self.memberView)
if let sort = templateModel?.sort, sort.count > 0 {
sort.forEach {
if $0 == .vip {
self.addMemberView(list: templateModel?.list_sub_vip)
} else if $0 == .coin {
self.addCoinView(list: templateModel?.list_coins)
}
if let list = templateModel?.list_coins, list.count > 0 {
self.rechargeView.dataArr = templateModel?.list_coins
self.stackView.addArrangedSubview(self.rechargeView)
}
} else {
self.addMemberView(list: templateModel?.list_sub_vip)
self.addCoinView(list: templateModel?.list_coins)
}
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
@ -268,5 +270,20 @@ extension SPPlayBuyView {
}
}
private func addMemberView(list: [SPPayTemplateItem]?) {
if let list = list, list.count > 0 {
self.memberView.setDataArr(dataArr: list)
self.stackView.addArrangedSubview(self.memberView)
}
}
private func addCoinView(list: [SPPayTemplateItem]?) {
if let list = list, list.count > 0 {
self.rechargeView.dataArr = list
self.stackView.addArrangedSubview(self.rechargeView)
}
}
}

View File

@ -188,19 +188,34 @@ extension SPStoreViewController {
guard let self = self else { return }
self.stackView.removeAllArrangedSubview()
if let list = templateModel?.list_sub_vip, list.count > 0 {
self.memberView.setDataArr(dataArr: templateModel?.list_sub_vip)
if let sort = templateModel?.sort, sort.count > 0 {
sort.forEach {
if $0 == .vip {
self.addMemberView(list: templateModel?.list_sub_vip)
} else if $0 == .coin {
self.addCoinView(list: templateModel?.list_coins)
}
}
} else {
self.addMemberView(list: templateModel?.list_sub_vip)
self.addCoinView(list: templateModel?.list_coins)
}
}
}
private func addMemberView(list: [SPPayTemplateItem]?) {
if let list = list, list.count > 0 {
self.memberView.setDataArr(dataArr: list)
self.stackView.addArrangedSubview(self.memberView)
}
}
if let list = templateModel?.list_coins, list.count > 0 {
self.rechargeView.dataArr = templateModel?.list_coins
private func addCoinView(list: [SPPayTemplateItem]?) {
if let list = list, list.count > 0 {
self.rechargeView.dataArr = list
self.stackView.addArrangedSubview(self.rechargeView)
}
}
}
}

View File

@ -10,6 +10,13 @@ import SmartCodable
class SPPayTemplateModel: SPModel, SmartCodable {
enum SortName: String, SmartCaseDefaultable {
case coin = "list_coins"
case vip = "list_sub_vip"
}
var list_coins: [SPPayTemplateItem]?
var list_sub_vip: [SPPayTemplateItem]?
var sort: [SortName]?
}