延迟深度链接开发,充值页面排序开发,1.1.2提审
This commit is contained in:
parent
1588233050
commit
6e4051494e
@ -9,6 +9,7 @@ import UIKit
|
|||||||
#if canImport(FacebookCore)
|
#if canImport(FacebookCore)
|
||||||
import FacebookCore
|
import FacebookCore
|
||||||
#endif
|
#endif
|
||||||
|
import AdjustSdk
|
||||||
|
|
||||||
|
|
||||||
extension SceneDelegate {
|
extension SceneDelegate {
|
||||||
@ -24,6 +25,9 @@ extension SceneDelegate {
|
|||||||
result = ApplicationDelegate.shared.application(UIApplication.shared, open: url, sourceApplication: nil, annotation: [UIApplication.OpenURLOptionsKey.annotation])
|
result = ApplicationDelegate.shared.application(UIApplication.shared, open: url, sourceApplication: nil, annotation: [UIApplication.OpenURLOptionsKey.annotation])
|
||||||
#endif
|
#endif
|
||||||
if !result {
|
if !result {
|
||||||
|
if let link = ADJDeeplink(deeplink: url) {
|
||||||
|
Adjust.processDeeplink(link)
|
||||||
|
}
|
||||||
handleOpenAppMessage(webpageURL: url)
|
handleOpenAppMessage(webpageURL: url)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -32,15 +36,19 @@ extension SceneDelegate {
|
|||||||
///UniversalLink 打开app
|
///UniversalLink 打开app
|
||||||
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
|
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
|
||||||
guard let webpageURL = userActivity.webpageURL else { return }
|
guard let webpageURL = userActivity.webpageURL else { return }
|
||||||
|
let result = ApplicationDelegate.shared.application(UIApplication.shared, continue: userActivity)
|
||||||
|
|
||||||
handleOpenAppMessage(webpageURL: webpageURL)
|
if !result {
|
||||||
|
handleOpenAppMessage(webpageURL: webpageURL)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
extension SceneDelegate {
|
extension SceneDelegate {
|
||||||
static var hasOpenMessage = false
|
///是否允许打开消息(每次打开APP只允许打开一次消息)
|
||||||
|
static var allowOpenMessage = true
|
||||||
///是否需要重试
|
///是否需要重试
|
||||||
static var isNeedRetry = false
|
static var isNeedRetry = false
|
||||||
|
|
||||||
@ -48,7 +56,7 @@ extension SceneDelegate {
|
|||||||
|
|
||||||
func handleOpenAppMessage(webpageURL: URL?) {
|
func handleOpenAppMessage(webpageURL: URL?) {
|
||||||
guard SPNetworkReachabilityManager.manager.isReachable == true,
|
guard SPNetworkReachabilityManager.manager.isReachable == true,
|
||||||
AppDelegate.haveBeenShownAPNS,
|
// AppDelegate.haveBeenShownAPNS,
|
||||||
SPAPPTool.isAppOpen,
|
SPAPPTool.isAppOpen,
|
||||||
SPAPPTool.idfaAuthorizationFinish //idfa授权完成
|
SPAPPTool.idfaAuthorizationFinish //idfa授权完成
|
||||||
else {
|
else {
|
||||||
@ -74,21 +82,15 @@ extension SceneDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func _handleOpenAppMessage(webpageURL: URL?) {
|
private func _handleOpenAppMessage(webpageURL: URL?) {
|
||||||
if !SPAPPTool.isAppOpen { return }
|
|
||||||
|
|
||||||
if Self.hasOpenMessage { return }
|
guard SceneDelegate.allowOpenMessage else { return }
|
||||||
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
|
SceneDelegate.allowOpenMessage = false
|
||||||
Self.hasOpenMessage = false
|
|
||||||
}
|
|
||||||
|
|
||||||
Self.hasOpenMessage = true
|
|
||||||
|
|
||||||
//统计用URL
|
//统计用URL
|
||||||
var statUrlStr: String?
|
var statUrlStr: String? = webpageURL?.absoluteString
|
||||||
var data: [String : Any]?
|
var data: [String : Any]? = webpageURL?.query?.urlQuryToDictionary()
|
||||||
|
|
||||||
if let pasteStr = UIPasteboard.general.string, pasteStr.contains("movia") {
|
if statUrlStr == nil, let pasteStr = UIPasteboard.general.string, pasteStr.contains("movia") {
|
||||||
UIPasteboard.general.string = nil
|
|
||||||
let tempArr = pasteStr.components(separatedBy: "?")
|
let tempArr = pasteStr.components(separatedBy: "?")
|
||||||
let query = tempArr.last
|
let query = tempArr.last
|
||||||
|
|
||||||
@ -98,13 +100,7 @@ extension SceneDelegate {
|
|||||||
statUrlStr = pasteStr
|
statUrlStr = pasteStr
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
UIPasteboard.general.string = nil
|
||||||
|
|
||||||
|
|
||||||
if data == nil {
|
|
||||||
data = webpageURL?.query?.urlQuryToDictionary()
|
|
||||||
statUrlStr = webpageURL?.absoluteString
|
|
||||||
}
|
|
||||||
|
|
||||||
if let urlStr = statUrlStr {//上报结果
|
if let urlStr = statUrlStr {//上报结果
|
||||||
SPStatAPI.requestStatW2a(data: urlStr)
|
SPStatAPI.requestStatW2a(data: urlStr)
|
||||||
|
@ -22,12 +22,32 @@ extension AppDelegate {
|
|||||||
registAdjust()
|
registAdjust()
|
||||||
///设置刷新控件的语言
|
///设置刷新控件的语言
|
||||||
MJRefreshConfig.default.languageCode = SPLocalizedManager.shared.mjLocalizedKey
|
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() {
|
private func registAdjust() {
|
||||||
|
#if DEBUG
|
||||||
|
let config = ADJConfig(appToken: "7z38v0rvceww", environment: ADJEnvironmentSandbox)
|
||||||
|
config?.logLevel = .verbose
|
||||||
|
#else
|
||||||
let config = ADJConfig(appToken: "7z38v0rvceww", environment: ADJEnvironmentProduction)
|
let config = ADJConfig(appToken: "7z38v0rvceww", environment: ADJEnvironmentProduction)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
config?.delegate = self
|
||||||
Adjust.initSdk(config)
|
Adjust.initSdk(config)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//MARK: -------------- AdjustDelegate --------------
|
||||||
|
extension AppDelegate: AdjustDelegate {
|
||||||
|
func adjustDeferredDeeplinkReceived(_ deeplink: URL?) -> Bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -76,6 +76,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
|
|||||||
// Called as the scene transitions from the foreground to the background.
|
// 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
|
// 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.
|
// to restore the scene back to its current state.
|
||||||
|
SceneDelegate.allowOpenMessage = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -84,7 +84,6 @@ extension SPApi: TargetType {
|
|||||||
"lang-key" : SPLocalizedManager.shared.currentLocalizedKey,//当前语言
|
"lang-key" : SPLocalizedManager.shared.currentLocalizedKey,//当前语言
|
||||||
"time-zone" : String.timeZone(), //时区
|
"time-zone" : String.timeZone(), //时区
|
||||||
"app-version" : kSPAPPVersion,
|
"app-version" : kSPAPPVersion,
|
||||||
// "device-id" : JXUUID.systemUUID(), //设备id
|
|
||||||
"device-id" : JXUUID.uuid(), //设备id
|
"device-id" : JXUUID.uuid(), //设备id
|
||||||
"brand" : "apple", //品牌
|
"brand" : "apple", //品牌
|
||||||
"app-name" : kSPAPPBundleIdentifier,
|
"app-name" : kSPAPPBundleIdentifier,
|
||||||
|
@ -62,7 +62,8 @@ class SPWebView: WKWebView {
|
|||||||
|
|
||||||
func load(urlStr: String) {
|
func load(urlStr: String) {
|
||||||
guard let url = URL(string: urlStr) else { return }
|
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)
|
self.load(request)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,15 +250,17 @@ extension SPPlayBuyView {
|
|||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
self.stackView.removeAllArrangedSubview()
|
self.stackView.removeAllArrangedSubview()
|
||||||
|
|
||||||
|
if let sort = templateModel?.sort, sort.count > 0 {
|
||||||
if let list = templateModel?.list_sub_vip, list.count > 0 {
|
sort.forEach {
|
||||||
self.memberView.setDataArr(dataArr: templateModel?.list_sub_vip)
|
if $0 == .vip {
|
||||||
self.stackView.addArrangedSubview(self.memberView)
|
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) {
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -188,19 +188,34 @@ extension SPStoreViewController {
|
|||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
self.stackView.removeAllArrangedSubview()
|
self.stackView.removeAllArrangedSubview()
|
||||||
|
|
||||||
if let list = templateModel?.list_sub_vip, list.count > 0 {
|
if let sort = templateModel?.sort, sort.count > 0 {
|
||||||
self.memberView.setDataArr(dataArr: templateModel?.list_sub_vip)
|
sort.forEach {
|
||||||
self.stackView.addArrangedSubview(self.memberView)
|
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
if let list = templateModel?.list_coins, list.count > 0 {
|
|
||||||
self.rechargeView.dataArr = templateModel?.list_coins
|
|
||||||
self.stackView.addArrangedSubview(self.rechargeView)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,7 +9,14 @@ import UIKit
|
|||||||
import SmartCodable
|
import SmartCodable
|
||||||
|
|
||||||
class SPPayTemplateModel: SPModel, SmartCodable {
|
class SPPayTemplateModel: SPModel, SmartCodable {
|
||||||
|
|
||||||
|
enum SortName: String, SmartCaseDefaultable {
|
||||||
|
case coin = "list_coins"
|
||||||
|
case vip = "list_sub_vip"
|
||||||
|
}
|
||||||
|
|
||||||
var list_coins: [SPPayTemplateItem]?
|
var list_coins: [SPPayTemplateItem]?
|
||||||
var list_sub_vip: [SPPayTemplateItem]?
|
var list_sub_vip: [SPPayTemplateItem]?
|
||||||
|
|
||||||
|
var sort: [SortName]?
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user