|
@@ -7,6 +7,32 @@
|
|
|
|
|
|
|
|
|
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 {
|
|
@@ -16,23 +42,9 @@ extension PurchaseManager {
|
|
|
if let jsonString = KeychainManager.load(forKey: kFreeNumKey, type: String.self),
|
|
|
let jsonDict = jsonString.jsonDict() as? [String: Int]
|
|
|
{
|
|
|
- freeDict = jsonDict
|
|
|
- saveForFree()
|
|
|
- dePrint("从钥匙串取出了freeDict=\(freeDict)")
|
|
|
- }else{
|
|
|
- if let dict = UserDefaults.standard.dictionary(forKey: kFreeNumKey) as? [String: Int] {
|
|
|
- freeDict = dict
|
|
|
- } else {
|
|
|
- freeDict = [
|
|
|
- VipFreeNumType.generatePic.rawValue: 1,
|
|
|
- VipFreeNumType.aichat.rawValue: 1,
|
|
|
- VipFreeNumType.textGeneratePic.rawValue: 1,
|
|
|
- VipFreeNumType.picToPic.rawValue: 1,
|
|
|
- VipFreeNumType.aiGenerate.rawValue: 1,
|
|
|
- VipFreeNumType.videoV2.rawValue: 1,
|
|
|
- ]
|
|
|
- saveForFree()
|
|
|
- }
|
|
|
+ UserDefaults.standard.set(jsonDict, forKey: kFreeNumKey)
|
|
|
+ UserDefaults.standard.synchronize()
|
|
|
+ dePrint("从钥匙串取出了freeDict=\(jsonDict)")
|
|
|
}
|
|
|
|
|
|
if let jsonString = KeychainManager.load(forKey: kDayGeneratedNumKey, type: String.self),
|
|
@@ -53,48 +65,41 @@ extension PurchaseManager {
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- /// 使用一次免费次数
|
|
|
- func useOnceForFree(type: VipFreeNumType) {
|
|
|
- /// 总使用次数
|
|
|
- if isVip {
|
|
|
- saveForDayGeneratedNum(type: type)
|
|
|
- saveForVipGeneratedNum(type: type)
|
|
|
- }
|
|
|
-
|
|
|
- if isVip {
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
+ func saveForVipFreeNum(type: VipFreeNumType){
|
|
|
+ var freeDict = getFreeDict()
|
|
|
var freeNum = freeDict[type.rawValue] ?? 0
|
|
|
if freeNum > 0 {
|
|
|
- freeNum -= 1
|
|
|
+ freeNum-=1
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if freeNum < 0 {
|
|
|
freeNum = 0
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
freeDict[type.rawValue] = freeNum
|
|
|
- saveForFree()
|
|
|
-
|
|
|
+ saveForUserKeychain(data: freeDict,key: kFreeNumKey)
|
|
|
NotificationCenter.default.post(name: .kVipFreeNumChanged, object: nil, userInfo: ["VipFreeNumType": type])
|
|
|
}
|
|
|
|
|
|
- func freeNum(type: VipFreeNumType) -> Int {
|
|
|
- let freeNum = freeDict[type.rawValue] ?? 0
|
|
|
+ func freeNum(type:VipFreeNumType) -> Int{
|
|
|
+ let freeNum = getFreeDict()[type.rawValue] ?? 0
|
|
|
return freeNum
|
|
|
}
|
|
|
-
|
|
|
- func saveForFree() {
|
|
|
- UserDefaults.standard.set(freeDict, forKey: kFreeNumKey)
|
|
|
- UserDefaults.standard.synchronize()
|
|
|
-
|
|
|
- //保存到钥匙串
|
|
|
- if let jsonString = freeDict.toJSONString() {
|
|
|
- KeychainManager.save(jsonString, forKey: kFreeNumKey)
|
|
|
- dePrint("从钥匙串存入了jsonString kFreeNumKey=\(jsonString)")
|
|
|
- KeychainManager.save(jsonString, forKey: kFreeNumKey)
|
|
|
+
|
|
|
+
|
|
|
+ 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
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -103,7 +108,7 @@ extension PurchaseManager {
|
|
|
if isVip == true {
|
|
|
return true
|
|
|
} else {
|
|
|
- if let freeNum = freeDict[type.rawValue], freeNum > 0 {
|
|
|
+ if let freeNum = getFreeDict()[type.rawValue], freeNum > 0 {
|
|
|
return true
|
|
|
}
|
|
|
}
|
|
@@ -118,3 +123,4 @@ extension PurchaseManager {
|
|
|
return true
|
|
|
}
|
|
|
}
|
|
|
+
|