179 lines
5.6 KiB
Swift
179 lines
5.6 KiB
Swift
//
|
||
// NRStatAPI.swift
|
||
// ReaderHive
|
||
//
|
||
// Created by 澜声世纪 on 2025/12/17.
|
||
//
|
||
|
||
import UIKit
|
||
import Alamofire
|
||
|
||
struct NRStatAPI {
|
||
|
||
enum EventKey: String {
|
||
case payError = "pay_error" //支付过程中的其它错误
|
||
case payCallback = "pay_callback" //支付成功,但是后台接口失败
|
||
case payRestore = "pay_restore" //restore 失败
|
||
case forceUpdate = "force_update"//更新弹窗
|
||
case payCancel = "pay_cancel" //用户取消支付
|
||
case payTemplateDialog = "pay_template_dialog"//详情页面弹出支付模版事件
|
||
}
|
||
|
||
///统计w2a点击
|
||
static func nr_requestStatW2a(data: String) {
|
||
|
||
let parameters = [
|
||
"data" : data
|
||
]
|
||
|
||
var param = NRNetwork.Parameters(path: "/w2aSelfAttribution")
|
||
param.method = .post
|
||
param.isLoding = false
|
||
param.isToast = false
|
||
param.parameters = parameters
|
||
|
||
NRNetwork.request(parameters: param) { (response: NRNetwork.Response<String>) in }
|
||
}
|
||
|
||
///事件统计
|
||
static func nr_requestEventStat(orderCode: String?, shortPlayId: String?, videoId: String?, eventKey: EventKey, errorMsg: String?, otherParamenters: [String : Any]? = nil) {
|
||
|
||
var eventName = ""
|
||
switch eventKey {
|
||
case .payRestore:
|
||
eventName = "pay restore"
|
||
|
||
case .payCallback:
|
||
eventName = "pay callback failed"
|
||
|
||
case .forceUpdate:
|
||
eventName = "force update"
|
||
|
||
case .payCancel:
|
||
eventName = "user pay canceled"
|
||
|
||
default:
|
||
eventName = "platform pay failed"
|
||
}
|
||
|
||
var parameters: [String : Any] = [
|
||
"userId" : NRLoginManager.manager.userInfo?.customer_id ?? "",
|
||
"short_play_video_id" : videoId ?? "0",
|
||
"short_play_id" : shortPlayId ?? "0",
|
||
"event_key" : eventKey.rawValue,
|
||
"order_code": orderCode ?? "",
|
||
"event_name" : eventName,
|
||
]
|
||
|
||
if let errorMsg = errorMsg {
|
||
parameters["error_msg"] = errorMsg
|
||
}
|
||
|
||
|
||
if let otherParamenters = otherParamenters {
|
||
otherParamenters.forEach {
|
||
parameters[$0] = $1
|
||
}
|
||
}
|
||
|
||
var param = NRNetwork.Parameters(path: "/event/add")
|
||
param.method = .post
|
||
param.isLoding = false
|
||
param.isToast = false
|
||
param.parameters = parameters
|
||
|
||
NRNetwork.request(parameters: param) { (response: NRNetwork.Response<String>) in }
|
||
}
|
||
|
||
///进入APP
|
||
private static var nr_needRequestEnterApp = true
|
||
static func nr_requestEnterApp() {
|
||
guard nr_needRequestEnterApp else { return }
|
||
nr_needRequestEnterApp = false
|
||
DispatchQueue.global().asyncAfter(deadline: .now() + 1) {
|
||
nr_needRequestEnterApp = true
|
||
}
|
||
|
||
var param = NRNetwork.Parameters(path: "/customer/enterTheApp")
|
||
param.method = .post
|
||
param.isLoding = false
|
||
param.isToast = false
|
||
|
||
NRNetwork.request(parameters: param) { (response: NRNetwork.Response<String>) in }
|
||
}
|
||
|
||
///离开APP
|
||
static func nr_requestLeaveApp() {
|
||
var param = NRNetwork.Parameters(path: "/customer/leaveApp")
|
||
param.method = .post
|
||
param.isLoding = false
|
||
param.isToast = false
|
||
|
||
NRNetwork.request(parameters: param) { (response: NRNetwork.Response<String>) in }
|
||
}
|
||
|
||
static func nr_requestStatOnLine() {
|
||
var param = NRNetwork.Parameters(path: "/customer/onLine")
|
||
param.method = .post
|
||
param.isLoding = false
|
||
param.isToast = false
|
||
|
||
NRNetwork.request(parameters: param) { (response: NRNetwork.Response<String>) in }
|
||
}
|
||
|
||
static func nr_requestUploadApnsAuthorizationStatus(_ status: Bool) {
|
||
let parameters = [
|
||
"is_open_notice" : status ? 1 : 0
|
||
]
|
||
var param = NRNetwork.Parameters(path: "/customer/uploadNoticeStatus")
|
||
param.method = .post
|
||
param.isLoding = false
|
||
param.isToast = false
|
||
param.parameters = parameters
|
||
|
||
NRNetwork.request(parameters: param) { (response: NRNetwork.Response<String>) in }
|
||
}
|
||
|
||
static func nr_requestStatApnsClick(id: String, title: String) {
|
||
let parameters = [
|
||
"message_id" : id,
|
||
"title" : title
|
||
]
|
||
|
||
var param = NRNetwork.Parameters(path: "/message/sendReport")
|
||
param.method = .post
|
||
param.isLoding = false
|
||
param.isToast = false
|
||
param.parameters = parameters
|
||
|
||
NRNetwork.request(parameters: param) { (response: NRNetwork.Response<String>) in }
|
||
}
|
||
|
||
static func nr_requestUploadApnsDeviceToken(token: String) {
|
||
let parameters = [
|
||
"fcm_token": token
|
||
]
|
||
|
||
var param = NRNetwork.Parameters(path: "/customer/firebaseToken")
|
||
param.method = .post
|
||
param.isLoding = false
|
||
param.isToast = false
|
||
param.parameters = parameters
|
||
|
||
NRNetwork.request(parameters: param) { (response: NRNetwork.Response<String>) in }
|
||
}
|
||
}
|
||
|
||
extension NRStatAPI {
|
||
///更新通知状态
|
||
static func nr_uploadApnsAuthorizationStatus() {
|
||
UNUserNotificationCenter.current().getNotificationSettings { settings in
|
||
if settings.authorizationStatus == .authorized {
|
||
nr_requestUploadApnsAuthorizationStatus(true)
|
||
} else if settings.authorizationStatus == .denied {
|
||
nr_requestUploadApnsAuthorizationStatus(false)
|
||
}
|
||
}
|
||
}
|
||
}
|