123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- //
- // TSPurchaseManager+Free.swift
- // AIEmoji
- //
- // Created by 100Years on 2025/7/24.
- //
- let kFreeNumKey = "kFreeNumKey"
- extension PurchaseManager {
-
- /// 使用一次免费次数
- func useOnceForFree(type: VipFreeNumType) {
- if isVip {
- return
- }
-
- /// 总使用次数
- saveForVipFreeNum(type: type)
- saveForDayGeneratedNum(type: type)
- saveForVipGeneratedNum(type: type)
- }
-
- func saveForUserKeychain(data:[String:Any],key:String) {
- UserDefaults.standard.set(data, forKey: key)
- UserDefaults.standard.synchronize()
-
- //保存到钥匙串
- if let jsonString = data.toJSONString() {
- KeychainManager.save(jsonString, forKey: key)
- dePrint("从钥匙串存入了key=\(key),jsonString=\(jsonString)")
- }
- }
- }
- /// 免费生成图片次数
- extension PurchaseManager {
- func initializeForFree() {
-
- if let jsonString = KeychainManager.load(forKey: kFreeNumKey, type: String.self),
- let jsonDict = jsonString.jsonDict() as? [String: Int]
- {
- UserDefaults.standard.set(jsonDict, forKey: kFreeNumKey)
- UserDefaults.standard.synchronize()
- dePrint("从钥匙串取出了freeDict=\(jsonDict)")
- }
-
- if let jsonString = KeychainManager.load(forKey: kDayGeneratedNumKey, type: String.self),
- let jsonDict = jsonString.jsonDict() as? [String: [String: Any]]
- {
- UserDefaults.standard.set(jsonDict, forKey: kDayGeneratedNumKey)
- UserDefaults.standard.synchronize()
- dePrint("从钥匙串取出了kDayGeneratedNumKey=\(jsonDict)")
- }
-
- if let jsonString = KeychainManager.load(forKey: kVipGeneratedNumKey, type: String.self),
- let jsonDict = jsonString.jsonDict() as? [String: [String: Any]]
- {
- UserDefaults.standard.set(jsonDict, forKey: kVipGeneratedNumKey)
- UserDefaults.standard.synchronize()
- dePrint("从钥匙串取出了kVipGeneratedNumKey=\(jsonDict)")
- }
- }
- func saveForVipFreeNum(type: VipFreeNumType){
- var freeDict = getFreeDict()
- var freeNum = freeDict[type.rawValue] ?? 0
- if freeNum > 0 {
- freeNum-=1
- }
-
- if freeNum < 0 {
- freeNum = 0
- }
-
- freeDict[type.rawValue] = freeNum
- saveForUserKeychain(data: freeDict,key: kFreeNumKey)
- NotificationCenter.default.post(name: .kVipFreeNumChanged, object: nil, userInfo: ["VipFreeNumType": type])
- }
- func freeNum(type:VipFreeNumType) -> Int{
- let freeNum = getFreeDict()[type.rawValue] ?? 0
- return freeNum
- }
-
-
- func getFreeDict()->[String:Int]{
- if let dict = UserDefaults.standard.dictionary(forKey: kFreeNumKey) as? [String:Int]{
- return dict
- }else{
- let dict = [
- VipFreeNumType.generatePic.rawValue: 1,
- VipFreeNumType.aichat.rawValue: 1,
- VipFreeNumType.textGeneratePic.rawValue: 1,
- VipFreeNumType.picToPic.rawValue: 1,
- VipFreeNumType.aiGenerate.rawValue: 1,
- VipFreeNumType.videoV2.rawValue: 1,
- ]
- return dict
- }
- }
- /// 免费次数是否可用
- func freeNumAvailable(type: VipFreeNumType) -> Bool {
- if isVip == true {
- return true
- } else {
- if let freeNum = getFreeDict()[type.rawValue], freeNum > 0 {
- return true
- }
- }
- return false
- }
- /// 是否展示生成类的会员图标
- func generateVipShow(type: VipFreeNumType) -> Bool {
- if isVip == false, freeNum(type: type) > 0 {
- return false
- }
- return true
- }
- }
|