Music_Player3/relax.offline.mp3.music/MP/Common/Tool(工具封装)/MP_AnalyticsManager.swift
2024-06-15 23:52:09 +08:00

299 lines
11 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()
//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_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"
//(5)
private var times:Double = 5
private override init() {
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 {
//
self.remoteConfig.activate { changed, error in
if error == nil{
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)
}
//
let text = self.remoteConfig.configValue(forKey: "interstitialEvent").jsonValue as! [String:Any]
let seconds = text["times"] as! TimeInterval
self.times = seconds
}
}
}else {
//
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)
}
}
}
}
///
func getTimes() -> TimeInterval {
return times
}
//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
/// - 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)
}
}