Преглед изворни кода

【fix】每个用户有7天免费试用,还在试用期内的用户可以免费使用付费功能,但目前在7天试用期内的用户去使用时还是受到只能免费转换10页的限制或使用其他付费功能会弹出购买页面

tangchao пре 3 месеци
родитељ
комит
1442fb1e40

+ 2 - 8
PDF Office/PDF Master/AppDelegate.swift

@@ -208,10 +208,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, iRateDelegate{
             KMHTTP.OEM_POST(urlString: kURLAPI_oemGetPermissions, parameter: nil, headers: header) { success, dataModel, err in
                 if success == false { // App 启动 Token 过期 退出登陆 & 解除设备绑定,需用户重新登陆再绑定
                     KMDataManager.ud_set("", forKey: kAccountTokenKey)
-                    AccountManager.manager.isLogin = false
-                    AccountManager.manager.isVip = false
-                    AccountManager.manager.hasAiPermissions = false
-                    AccountManager.manager.aiBuyUrl = nil
+                    AccountManager.manager.saveRights(model: nil)
                     
                     NotificationCenter.default.post(name: .loginStatusChanged, object: nil)
                     
@@ -223,10 +220,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, iRateDelegate{
                     return
                 }
                 let model = AccountRightModel(dict: dataModel?.data as? [String : Any] ?? [:])
-                AccountManager.manager.isLogin = true
-                AccountManager.manager.isVip = model.isVip == 1
-                AccountManager.manager.hasAiPermissions = model.hasAiPermissions == 1
-                AccountManager.manager.aiBuyUrl = model.aiBuyUrl
+                AccountManager.manager.saveRights(model: model)
                 
                 NotificationCenter.default.post(name: .loginStatusChanged, object: nil)
                 

+ 1 - 1
PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/AINewConfigWindowController.swift

@@ -291,7 +291,7 @@ protocol AIConfigWindowDelegate: AnyObject {
     }
     
     func chooseAIFunctionWithType(_ aiConfigType: AIConfigType) -> Void {
-        if AccountManager.manager.hasAiPermissions == false {
+        if AccountManager.manager.hasAiPermissions == false && AccountManager.manager.isTrialing == false {
 //        if AIInfoManager.default().aiInfo.infoDict.keys.count == 0 {
 #if VERSION_DMG
             KMPurchaseCompareWindowController.dmgPurchaseInstance().showWindow(nil)

+ 2 - 8
PDF Office/PDF Master/Class/Account/Controller/AccountProfileController.swift

@@ -126,10 +126,7 @@ class AccountProfileController: NSViewController {
                 let model = AccountRightModel(dict: dataModel?.data as? [String : Any] ?? [:])
                 self.model = model
                 let isVip = model.isVip
-                AccountManager.manager.isLogin = true
-                AccountManager.manager.isVip = model.isVip == 1
-                AccountManager.manager.hasAiPermissions = model.hasAiPermissions == 1
-                AccountManager.manager.aiBuyUrl = model.aiBuyUrl
+                AccountManager.manager.saveRights(model: model)
                 
                 NotificationCenter.default.post(name: .loginStatusChanged, object: nil)
                 if isVip == 1 {
@@ -186,10 +183,7 @@ class AccountProfileController: NSViewController {
                             
                             self?.view.window?.windowController?.km_quick_endSheet()
                             KMDataManager.ud_set("", forKey: kAccountTokenKey)
-                            AccountManager.manager.isLogin = false
-                            AccountManager.manager.isVip = false
-                            AccountManager.manager.hasAiPermissions = false
-                            AccountManager.manager.aiBuyUrl = nil
+                            AccountManager.manager.saveRights(model: nil)
                             
                             NotificationCenter.default.post(name: .loginStatusChanged, object: nil)
                         }

+ 19 - 0
PDF Office/PDF Master/Class/Account/Manager/AccountManager.swift

@@ -18,5 +18,24 @@ import Cocoa
     var hasAiPermissions = false
     var aiBuyUrl: String?
     
+    // 是否适用中
+    var isTrialing = false
+    
     var canUseAdvanceFlag = false
+    
+    func saveRights(model: AccountRightModel?) {
+        if let data = model {
+            self.isLogin = true
+            self.isVip = data.isVip == 1
+            self.hasAiPermissions = data.hasAiPermissions == 1
+            self.aiBuyUrl = data.aiBuyUrl
+            self.isTrialing = data.trialData?.status == 1
+        } else {
+            self.isLogin = false
+            self.isVip = false
+            self.hasAiPermissions = false
+            self.aiBuyUrl = nil
+            self.isTrialing = false
+        }
+    }
 }

+ 10 - 0
PDF Office/PDF Master/Class/Account/Tools/AccountTools.swift

@@ -19,6 +19,11 @@ import Cocoa
     }
     
     public class func canUseAdvance(callback: @escaping ((Bool, String?)->Void)) {
+        if AccountManager.manager.isTrialing {
+            callback(true, nil)
+            return
+        }
+        
         guard let token = KMDataManager.ud_string(forKey: kAccountTokenKey), token.isEmpty == false else {
             return callback(false, nil)
         }
@@ -39,6 +44,11 @@ import Cocoa
     }
     
     public class func canUseAdvance_success(callback: @escaping ((Bool)->Void)) {
+        if AccountManager.manager.isTrialing {
+            callback(true)
+            return
+        }
+        
         guard let token = KMDataManager.ud_string(forKey: kAccountTokenKey), token.isEmpty == false else {
             self.gotoCompare()
             return callback(false)

+ 3 - 12
PDF Office/PDF Master/Class/Account/Window/AccountCenterWindowController.swift

@@ -78,10 +78,7 @@ class AccountCenterWindowController: NSWindowController {
                     return
                 }
                 let model = AccountRightModel(dict: dataModel?.data as? [String : Any] ?? [:])
-                AccountManager.manager.isLogin = true
-                AccountManager.manager.isVip = model.isVip == 1
-                AccountManager.manager.hasAiPermissions = model.hasAiPermissions == 1
-                AccountManager.manager.aiBuyUrl = model.aiBuyUrl
+                AccountManager.manager.saveRights(model: model)
                 
                 NotificationCenter.default.post(name: .loginStatusChanged, object: nil)
                 
@@ -140,10 +137,7 @@ class AccountCenterWindowController: NSWindowController {
                     }
                     let rmodel = AccountRightModel(dict: dataModel?.data as? [String : Any] ?? [:])
                     
-                    AccountManager.manager.isLogin = true
-                    AccountManager.manager.isVip = rmodel.isVip == 1
-                    AccountManager.manager.hasAiPermissions = rmodel.hasAiPermissions == 1
-                    AccountManager.manager.aiBuyUrl = rmodel.aiBuyUrl
+                    AccountManager.manager.saveRights(model: rmodel)
                     
                     NotificationCenter.default.post(name: .loginStatusChanged, object: nil)
                     
@@ -194,10 +188,7 @@ class AccountCenterWindowController: NSWindowController {
                     }
                     let rmodel = AccountRightModel(dict: dataModel?.data as? [String : Any] ?? [:])
                     
-                    AccountManager.manager.isLogin = true
-                    AccountManager.manager.isVip = rmodel.isVip == 1
-                    AccountManager.manager.hasAiPermissions = rmodel.hasAiPermissions == 1
-                    AccountManager.manager.aiBuyUrl = rmodel.aiBuyUrl
+                    AccountManager.manager.saveRights(model: rmodel)
                     
                     NotificationCenter.default.post(name: .loginStatusChanged, object: nil)
                     

+ 1 - 1
PDF Office/PDF Master/Class/Purchase/DMG/Verification/VerificationManager/AIInfoManager.m

@@ -510,7 +510,7 @@ static AIInfoManager *__Manager = nil;
 @implementation AIInfoManager (PDFull)
 
 - (BOOL)aiInfoValid {
-    return AccountManager.manager.hasAiPermissions;
+    return AccountManager.manager.hasAiPermissions || AccountManager.manager.isTrialing;
 }
 
 @end

+ 6 - 6
PDF Office/PDF Master/Class/Purchase/IAPProductsManager.m

@@ -530,9 +530,9 @@ NSString * const KMIAPSubscriptionLoadedNotification = @"KMIAPSubscriptionLoaded
 - (BOOL)isAvailableAllFunction {
 #if VERSION_DMG
     // 桌机版
-//    if ([AccountManager manager].isVip) {
-//        return true;
-//    }
+    if ([AccountManager manager].isTrialing) {
+        return true;
+    }
     
 //    dispatch_semaphore_t sema = dispatch_semaphore_create(0);
 //    [AccountTools canUseAdvanceWithCallback:^(BOOL success, NSString * _Nullable err) {
@@ -575,9 +575,9 @@ NSString * const KMIAPSubscriptionLoadedNotification = @"KMIAPSubscriptionLoaded
 - (BOOL)isAvailableAdvancedPDFToOffice {
 #if VERSION_DMG
     // 桌机版
-//    if ([AccountManager manager].isVip) {
-//        return true;
-//    }
+    if ([AccountManager manager].isTrialing) {
+        return true;
+    }
     
     VerificationManager *tManager = [VerificationManager manager];
     BOOL tLicenseOK = NO;