Music_Player3/relax.offline.mp3.music/MP/Common/Tool(工具封装)/MP_AnalyticsManager.swift
2024-06-20 19:25:54 +08:00

460 lines
18 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// MP_AnalyticsManager.swift
// MusicPlayer
//
// Created by Mr.Zhou on 2024/5/30.
//
import UIKit
import FirebaseAnalytics
import FirebaseCrashlytics
import FirebaseRemoteConfig
///
class MP_AnalyticsManager: NSObject {
static let shared = MP_AnalyticsManager()
//
private var isOLD:Bool
//MARK: -
private let remoteConfig = RemoteConfig.remoteConfig()
//MARK: -
//
private let user_launch:String = "user_launch"
//app退
private let app_crash:String = "app_crash"
//
private let launch_pv:String = "launch_pv"
//A
private let home_a_pv:String = "home_a_pv"
//B
private let home_b_pv:String = "home_b_pv"
//
private let home_b_module_showfailure_error:String = "home_b_module_showfailure_error"
//
private let home_b_module_showsucces_action:String = "home_b_module_showsucces_action"
//
private let home_b_module_click:String = "home_b_module_click"
//B
private let me_b_pv = "me_b_pv"
//B
private let player_b_pv = "player_b_pv"
//
private let player_b_delay_action = "player_b_delay_action"
//
private let player_b_imp = "player_b_imp"
//
private let player_b_list = "player_b_list"
//
private let player_b_success_action = "player_b_success_action"
//
private let player_b_failure_error = "player_b_failure_error"
//
private let player_b_love_click = "player_b_love_click"
//
private let player_b_unlove_click = "player_b_unlove_click"
//
private let player_b_download_click = "player_b_download_click"
//
private let player_b_downloadsuccess_action = "player_b_downloadsuccess_action"
//
private let player_b_downloadfailure_error = "player_b_downloadfailure_error"
//B
private let search_pv = "search_pv"
//SUG
private let search_sug_show = "search_sug_show"
//sug
private let search_sug_click = "search_sug_click"
//
private let search_result_pv = "search_result_pv"
//
private let search_resultsuccess_action = "search_resultsuccess_action"
private override init() {
//
if UserDefaults.standard.bool(forKey: "UserStatus") {
//
isOLD = true
}else {
//
isOLD = false
UserDefaults.standard.setValue(true, forKey: "UserStatus")
}
super.init()
Crashlytics.crashlytics().log(app_crash)
//
remoteConfig.setDefaults(["versionCode":app_Version as NSObject,
"enter":true as NSObject])
}
//MARK: -
///A/B
func getOpenStatus(_ completion:@escaping ((Bool) -> Void)) {
//
let duration:TimeInterval = 0
remoteConfig.fetch(withExpirationDuration: duration) { status, error in
if status == .success {
print("获取配置成功,各项功能使用线上配置")
//
self.remoteConfig.activate { changed, error in
if error == nil{
//App广
if let text = self.remoteConfig.configValue(forKey: "openAppEventDuration").jsonValue as? [String:Any] {
let seconds = text["times"] as! TimeInterval
MP_AdMobManager.shared.setOpenAppDuration(seconds)
print("更新了启动App广告时长间隔")
}
//广
if let text = self.remoteConfig.configValue(forKey: "interstitialEventDuration").jsonValue as? [String:Any] {
let seconds = text["times"] as! TimeInterval
MP_AdMobManager.shared.setInterstitialDuration(seconds)
print("更新了插页广告时长间隔")
}
//广ID
if let content = self.remoteConfig.configValue(forKey: "adMobIDs").jsonValue as? [String:String] {
//广ID
for (key, value) in content {
// print(key)
UserDefaults.standard.setValue(value, forKey: key)
}
print("更新了所有广告ID")
MP_AdMobManager.shared.reloadAdMobIDs()
}
let js = self.remoteConfig.configValue(forKey: "openStatus").jsonValue as! [String:Any]
let value = js["versionCode"] as! String
if value == app_Version {
//
let open = js["enter"] as! Bool
if open {
//b
completion(true)
}else {
//a
completion(false)
}
}else {
//B
completion(true)
}
}
}
}else {
print("获取配置失败,各项功能使用默认配置")
//
if let js = self.remoteConfig.configValue(forKey: "openStatus").jsonValue as? [String:Any] {
//
let value = js["versionCode"] as! String
if value == app_Version {
//
let open = js["enter"] as! Bool
if open {
//b
completion(true)
}else {
//a
completion(false)
}
}else {
//B
completion(true)
}
}else {
//A
completion(false)
}
}
}
}
//MARK: -
///
func user_launchAction(){
Analytics.logEvent(user_launch, parameters: nil)
}
///
func launch_pvAction(){
Analytics.logEvent(launch_pv, parameters: nil)
}
///A
func home_a_pvAction(){
Analytics.logEvent(home_a_pv, parameters: nil)
}
///B
func home_b_pvAction(){
Analytics.logEvent(home_b_pv, parameters: nil)
}
///
func home_b_module_showfailure_errorAction(_ error:String) {
Analytics.logEvent(home_b_module_showfailure_error, parameters: ["error":error])
}
///
func home_b_module_showsucces_actionAction(){
Analytics.logEvent(home_b_module_showsucces_action, parameters: nil)
}
///
/// - Parameter modulename:
func home_b_module_clickAction(_ modulename:String){
Analytics.logEvent(home_b_module_click, parameters: ["modulename":modulename])
}
///B
func me_b_pvAction(){
Analytics.logEvent(me_b_pv, parameters: nil)
}
///B
func player_b_impAction() {
Analytics.logEvent(player_b_imp, parameters: nil)
}
///B
func player_b_listAction() {
Analytics.logEvent(player_b_list, parameters: nil)
}
/// B
/// - Parameters:
/// - videoid: id
/// - videoname:
/// - artistname:
func player_b_pvAction(_ videoid:String, videoname:String, artistname:String){
Analytics.logEvent(player_b_pv, parameters: [
"videoid":videoid,
"videoname":videoname,
"artistname":artistname
])
}
///
/// - Parameters:
/// - videoid: id
/// - videoname:
/// - artistname:
func player_b_delay_actionAction(_ videoid:String, videoname:String, artistname:String, delay:String){
Analytics.logEvent(player_b_delay_action, parameters: [
"videoid":videoid,
"videoname":videoname,
"artistname":artistname,
"delay":delay
])
}
///
/// - Parameters:
/// - videoid: id
/// - videoname:
/// - artistname:
func player_b_success_actionAction(_ videoid:String, videoname:String, artistname:String){
Analytics.logEvent(player_b_success_action, parameters: [
"videoid":videoid,
"videoname":videoname,
"artistname":artistname
])
}
///
func player_b_failure_errorAction(_ videoid:String, videoname:String, artistname:String, error:String) {
Analytics.logEvent(player_b_failure_error, parameters: [
"videoid":videoid,
"videoname":videoname,
"artistname":artistname,
"error":error
])
}
///
/// - Parameters:
/// - videoid: id
/// - videoname:
/// - artistname:
func player_b_love_clickAction(_ videoid:String, videoname:String, artistname:String){
Analytics.logEvent(player_b_love_click, parameters: [
"videoid":videoid,
"videoname":videoname,
"artistname":artistname
])
}
///
/// - Parameters:
/// - videoid: id
/// - videoname:
/// - artistname:
func player_b_unlove_clickAction(_ videoid:String, videoname:String, artistname:String){
Analytics.logEvent(player_b_unlove_click, parameters: [
"videoid":videoid,
"videoname":videoname,
"artistname":artistname
])
}
///
/// - Parameters:
/// - videoid: id
/// - videoname:
/// - artistname:
func player_b_download_clickAction(_ videoid:String, videoname:String, artistname:String){
Analytics.logEvent(player_b_download_click, parameters: [
"videoid":videoid,
"videoname":videoname,
"artistname":artistname
])
}
///
/// - Parameters:
/// - videoid: id
/// - videoname:
/// - artistname:
func player_b_downloadsuccess_actionAction(_ videoid:String, videoname:String, artistname:String){
Analytics.logEvent(player_b_downloadsuccess_action, parameters: [
"videoid":videoid,
"videoname":videoname,
"artistname":artistname
])
}
///
func player_b_downloadfailure_errorAction(_ videoid:String, videoname:String, artistname:String, error:String) {
Analytics.logEvent(player_b_downloadfailure_error, parameters: [
"videoid":videoid,
"videoname":videoname,
"artistname":artistname,
"error":error
])
}
///B
func search_pvAction(){
Analytics.logEvent(search_pv, parameters: nil)
}
///SUG
func search_sug_showAction(){
Analytics.logEvent(search_sug_show, parameters: nil)
}
/// sug
/// - Parameter sugname:
func search_sug_clickAction(_ sugname:String){
Analytics.logEvent(search_sug_click, parameters: ["sugname":sugname])
}
///
func search_result_pvAction(){
Analytics.logEvent(search_result_pv, parameters: nil)
}
///
func search_resultsuccess_actionAction(){
Analytics.logEvent(search_resultsuccess_action, parameters: nil)
}
//MARK: - 广
//
private let cold_ads_chance:String = "cold_ads_chance"
//
private let cold_ads_show:String = "cold_ads_show"
//
private let hot_ads_chance:String = "hot_ads_chance"
//
private let hot_ads_show:String = "hot_ads_show"
//
private let search_ads_chance:String = "search_ads_chance"
//
private let search_ads_show:String = "search_ads_show"
//
private let result_ads_chance:String = "result_ads_chance"
//
private let result_ads_show:String = "result_ads_show"
//
private let play_ads_chance:String = "play_ads_chance"
//
private let play_ads_show:String = "play_ads_show"
//
private let dl_ads_chance:String = "dl_ads_chance"
//
private let dl_ads_show:String = "dl_ads_show"
//
private let cut_ads_chance:String = "cut_ads_chance"
//
private let cut_ads_show:String = "cut_ads_show"
//
private let listclk_ads_chance:String = "listclk_ads_chance"
//
private let listclk_ads_show:String = "listclk_ads_show"
//
private let lbr_ads_chance:String = "lbr_ads_chance"
//
private let lbr_ads_show:String = "lbr_ads_show"
//
private let list_ads_chance:String = "list_ads_chance"
//
private let list_ads_show:String = "list_ads_show"
//MARK: - 广
///
func cold_ads_chanceAction() {
Analytics.logEvent(cold_ads_chance, parameters: ["status":isOLD ? "Old":"New"])
}
///
func cold_ads_showAction() {
Analytics.logEvent(cold_ads_show, parameters: ["status":isOLD ? "Old":"New"])
}
///
func hot_ads_chanceAction() {
Analytics.logEvent(hot_ads_chance, parameters: ["status":isOLD ? "Old":"New"])
}
///
func hot_ads_showAction() {
Analytics.logEvent(hot_ads_show, parameters: ["status":isOLD ? "Old":"New"])
}
///
func search_ads_chanceAction() {
Analytics.logEvent(search_ads_chance, parameters: ["status":isOLD ? "Old":"New"])
}
///
func search_ads_showAction() {
Analytics.logEvent(search_ads_show, parameters: ["status":isOLD ? "Old":"New"])
}
///
func result_ads_chanceAction() {
Analytics.logEvent(result_ads_chance, parameters: ["status":isOLD ? "Old":"New"])
}
///
func result_ads_showAction() {
Analytics.logEvent(result_ads_show, parameters: ["status":isOLD ? "Old":"New"])
}
///
func play_ads_chanceAction() {
Analytics.logEvent(play_ads_chance, parameters: ["status":isOLD ? "Old":"New"])
}
///
func play_ads_showAction() {
Analytics.logEvent(play_ads_show, parameters: ["status":isOLD ? "Old":"New"])
}
///
func dl_ads_chanceAction() {
Analytics.logEvent(dl_ads_chance, parameters: ["status":isOLD ? "Old":"New"])
}
///
func dl_ads_showAction() {
Analytics.logEvent(dl_ads_show, parameters: ["status":isOLD ? "Old":"New"])
}
///
func cut_ads_chanceAction() {
Analytics.logEvent(cut_ads_chance, parameters: ["status":isOLD ? "Old":"New"])
}
///
func cut_ads_showAction() {
Analytics.logEvent(cut_ads_show, parameters: ["status":isOLD ? "Old":"New"])
}
///
func listclk_ads_chanceAction() {
Analytics.logEvent(listclk_ads_chance, parameters: ["status":isOLD ? "Old":"New"])
}
///
func listclk_ads_showAction() {
Analytics.logEvent(listclk_ads_show, parameters: ["status":isOLD ? "Old":"New"])
}
///
func lbr_ads_chanceAction() {
Analytics.logEvent(lbr_ads_chance, parameters: ["status":isOLD ? "Old":"New"])
}
///
func lbr_ads_showAction() {
Analytics.logEvent(lbr_ads_show, parameters: ["status":isOLD ? "Old":"New"])
}
///
func list_ads_chanceAction() {
Analytics.logEvent(list_ads_chance, parameters: ["status":isOLD ? "Old":"New"])
}
///
func list_ads_showAction() {
Analytics.logEvent(list_ads_show, parameters: ["status":isOLD ? "Old":"New"])
}
}