Browse Source

【综合】跳转链接多语处理

niehaoyu 7 months ago
parent
commit
c01b6f606a

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

@@ -738,10 +738,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, iRateDelegate{
     }
     }
     
     
     @IBAction func crossPlatformAction(_ sender: NSMenuItem) {
     @IBAction func crossPlatformAction(_ sender: NSMenuItem) {
-        var tStrHttpUrl = "https://www.pdfreaderpro.com/store/pdf-pro-permanent-cross-platform-package?utm_source=pdf_pro_dmgs&utm_medium=toptbr_help&utm_campaign=cross_platform"
-        if SKInspectPublicTool.currentisLanguageHans() {
-            tStrHttpUrl = "https://www.pdfreaderpro.com/zh-cn/store/pdf-pro-permanent-cross-platform-package?utm_source=pdf_pro_dmg&utm_medium=toptbr_help_cn&utm_campaign=cross_platform"
-        }
+        var tStrHttpUrl = CrossPlatform_Link
         guard let url = URL(string: tStrHttpUrl) else {
         guard let url = URL(string: tStrHttpUrl) else {
             return
             return
         }
         }
@@ -755,7 +752,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, iRateDelegate{
     }
     }
     
     
     @IBAction func EducationDiscountAction(_ sender: NSMenuItem) {
     @IBAction func EducationDiscountAction(_ sender: NSMenuItem) {
-        let tStrHttpUrl = KMLocalizedString("https://www.pdfreaderpro.com/store?mode=edu#utm_source=mac_app&utm_medium=pdf_pro_dmg&utm_content=menu_bar_click", nil)
+        let tStrHttpUrl = Store_Edu_Link
         guard let url = URL(string: tStrHttpUrl) else {
         guard let url = URL(string: tStrHttpUrl) else {
             return
             return
         }
         }

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

@@ -60,7 +60,7 @@ class AIHeaderView: NSView, NibLoadable {
         let controller = AIUserInfoController.init()
         let controller = AIUserInfoController.init()
         controller.purchaseHandle = { vc in
         controller.purchaseHandle = { vc in
 #if VERSION_DMG
 #if VERSION_DMG
-            let url = URL(string: kAIStoreServerLink)
+            let url = URL(string: AIProduct_Link)
             NSWorkspace.shared.open(url!)
             NSWorkspace.shared.open(url!)
 #else
 #else
             AIPurchaseWindowController.currentWC().showWindow(nil)
             AIPurchaseWindowController.currentWC().showWindow(nil)

+ 1 - 1
PDF Office/PDF Master/Class/GuideInfo/KMFunctionGuideWindowController.swift

@@ -93,7 +93,7 @@ class KMFunctionGuideWindowController: NSWindowController {
                 self.multiController = KMFunctionGuideMultiController.init()
                 self.multiController = KMFunctionGuideMultiController.init()
                 self.multiController.clickHandle = {[weak self] controller in
                 self.multiController.clickHandle = {[weak self] controller in
 #if VERSION_DMG
 #if VERSION_DMG
-                    var url = URL(string:kAIStoreServerLink)!
+                    var url = URL(string: AIProduct_Link)!
                     NSWorkspace.shared.open(url)
                     NSWorkspace.shared.open(url)
 #else
 #else
                     AIPurchaseWindowController.currentWC().showWindow(nil)
                     AIPurchaseWindowController.currentWC().showWindow(nil)

+ 2 - 5
PDF Office/PDF Master/Class/Purchase/DMG/KMPurchaseCompareDMGWindowController.m

@@ -577,10 +577,7 @@ static NSString *const KMPurchaseCompareDMGCellIdentifier       = @"KMPurchaseCo
 
 
 - (IBAction)buttonItemClicked_Buy:(id)sender {
 - (IBAction)buttonItemClicked_Buy:(id)sender {
 #if VERSION_DMG
 #if VERSION_DMG
-    NSURL *url = [NSURL URLWithString:@"https://www.pdfreaderpro.com/store?utm_source=app_dmg&utm_medium=dmg_puw_comparison"];
-    if([SKInspectPublicTool currentisLanguageHans]) {
-        url = [NSURL URLWithString:@"https://www.pdfreaderpro.com/zh-cn/store?utm_source=app_dmg&utm_medium=dmg_puw_comparison"];
-    }
+    NSURL *url = [NSURL URLWithString:Swift_oc_Tool.Store_Link_OC];
     [[NSWorkspace sharedWorkspace] openURL:url];
     [[NSWorkspace sharedWorkspace] openURL:url];
     [[FMTrackEventManager defaultManager] trackEventWithEvent:@"PUW" withProperties:@{@"PUW_Btn":@"PUW_Btn_UpgradeBuyNow"}];
     [[FMTrackEventManager defaultManager] trackEventWithEvent:@"PUW" withProperties:@{@"PUW_Btn":@"PUW_Btn_UpgradeBuyNow"}];
 #endif
 #endif
@@ -637,7 +634,7 @@ static NSString *const KMPurchaseCompareDMGCellIdentifier       = @"KMPurchaseCo
 }
 }
 
 
 - (IBAction)aiPurchaseButtonClick:(NSButton *)sender {
 - (IBAction)aiPurchaseButtonClick:(NSButton *)sender {
-    NSURL *url = [NSURL URLWithString:kAIStoreServerLink];
+    NSURL *url = [NSURL URLWithString:Swift_oc_Tool.AIProduct_Link_OC];
     [[NSWorkspace sharedWorkspace] openURL:url];
     [[NSWorkspace sharedWorkspace] openURL:url];
     
     
     [[FMTrackEventManager defaultManager] trackEventWithEvent:@"PUW" withProperties:@{@"PUW_Btn":@"PUW_Btn_BuyAITools"}];
     [[FMTrackEventManager defaultManager] trackEventWithEvent:@"PUW" withProperties:@{@"PUW_Btn":@"PUW_Btn_BuyAITools"}];

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

@@ -556,7 +556,7 @@ NSPopoverDelegate>
     AIUserInfoController *controller = [[AIUserInfoController alloc] init];
     AIUserInfoController *controller = [[AIUserInfoController alloc] init];
     controller.purchaseHandle = ^(AIUserInfoController * _Nonnull vc) {
     controller.purchaseHandle = ^(AIUserInfoController * _Nonnull vc) {
 #if VERSION_DMG
 #if VERSION_DMG
-        NSURL *url = [NSURL URLWithString:kAIStoreServerLink];
+        NSURL *url = [NSURL URLWithString:Swift_oc_Tool.AIProduct_Link_OC];
         [[NSWorkspace sharedWorkspace] openURL:url];
         [[NSWorkspace sharedWorkspace] openURL:url];
 #else
 #else
         
         

+ 0 - 2
PDF Office/PDF Master/Class/Purchase/DMG/Verification/VerificationManager/VerificationManager.h

@@ -18,13 +18,11 @@
 
 
 #define kVerificationServer         @"http://test-store.kdan.cn:3018/"
 #define kVerificationServer         @"http://test-store.kdan.cn:3018/"
 #define kWebServerLink              NSLocalizedString(@"http://test-pdf-pro.kdan.cn:3021", nil)
 #define kWebServerLink              NSLocalizedString(@"http://test-pdf-pro.kdan.cn:3021", nil)
-#define kAIStoreServerLink          @"http://test-pdf-pro.kdan.cn:3021/ai-pdf"
 
 
 #else
 #else
 
 
 #define kVerificationServer         @"https://store.pdfreaderpro.com/"
 #define kVerificationServer         @"https://store.pdfreaderpro.com/"
 #define kWebServerLink              NSLocalizedString(@"http://www.pdfreaderpro.com/store", nil)
 #define kWebServerLink              NSLocalizedString(@"http://www.pdfreaderpro.com/store", nil)
-#define kAIStoreServerLink          @"https://www.pdfreaderpro.com/ai-pdf"
 
 
 #endif
 #endif
 
 

+ 35 - 0
PDF Office/PDF Master/Class/URLManager/KMURLConfigManager.swift

@@ -0,0 +1,35 @@
+//
+//  KMURLConfigManager.swift
+//  PDF Reader Pro
+//
+//  Created by Niehaoyu on 2024/8/12.
+//
+
+import Foundation
+
+//跳转Store界面
+let Store_Link = NSLocalizedString("https://www.pdfreaderpro.com/store?utm_source=appdmg&utm_medium=pricingcard&utm_campaign=upgrade", comment: "")
+
+//PDF to office pack
+let PDFToOfficePacket_Link = NSLocalizedString("https://www.pdfreaderpro.com/store/upgrade?utm_source=appdmg&utm_medium=toptbr&utm_campaign=pdftooffice", comment: "")
+
+//跨平台
+let CrossPlatform_Link = NSLocalizedString("https://www.pdfreaderpro.com/store/pdf-pro-permanent-cross-platform-package?utm_source=appdmg&utm_medium=toptbr&utm_campaign=crossplatform", comment: "")
+
+//AI包
+let AIProduct_Link = NSLocalizedString("https://www.pdfreaderpro.com/store/aitools?utm_source=appdmg&utm_medium=allapp&utm_campaign=aitool", comment: "")
+
+//教育折扣
+let Store_Edu_Link = NSLocalizedString("https://www.pdfreaderpro.com/store?mode=edu&utm_source=appdmg&utm_medium=toptbr&utm_campaign=edu", comment: "")
+
+@objc extension Swift_oc_Tool {
+
+    static let Store_Link_OC = Store_Link
+    static let PDFToOfficePacket_Link_OC = PDFToOfficePacket_Link
+    static let CrossPlatform_Link_OC = CrossPlatform_Link
+    static let AIProduct_Link_OC = AIProduct_Link
+    static let Store_Edu_Link_OC = Store_Edu_Link
+    
+    
+    
+}

+ 9 - 0
PDF Office/PDF Master/Strings/de.lproj/Localizable.strings

@@ -2899,3 +2899,12 @@
 "Contact Support" = "Kontaktieren Sie Support";
 "Contact Support" = "Kontaktieren Sie Support";
 "You can unbind your license through our website." = "Sie können Ihre Lizenz über unsere Website entbinden.";
 "You can unbind your license through our website." = "Sie können Ihre Lizenz über unsere Website entbinden.";
 "You have reached the maximum number of unbindings, please contact us." = "Sie haben die maximale Anzahl an Entbindungen erreicht. Bitte kontaktieren Sie uns.";
 "You have reached the maximum number of unbindings, please contact us." = "Sie haben die maximale Anzahl an Entbindungen erreicht. Bitte kontaktieren Sie uns.";
+
+
+//链接处理
+"https://www.pdfreaderpro.com/store?utm_source=appdmg&utm_medium=pricingcard&utm_campaign=upgrade" = "https://www.pdfreaderpro.com/de/store?utm_source=appdmg&utm_medium=pricingcard&utm_campaign=upgrade";
+"https://www.pdfreaderpro.com/store/upgrade?utm_source=appdmg&utm_medium=toptbr&utm_campaign=pdftooffice" = "https://www.pdfreaderpro.com/de/store/upgrade?utm_source=appdmg&utm_medium=toptbr&utm_campaign=pdftooffice";
+"https://www.pdfreaderpro.com/store/pdf-pro-permanent-cross-platform-package?utm_source=appdmg&utm_medium=toptbr&utm_campaign=crossplatform" = "https://www.pdfreaderpro.com/de/store/pdf-pro-permanent-cross-platform-package?utm_source=appwindows&utm_medium=toptbr&utm_campaign=crossplatform";
+"https://www.pdfreaderpro.com/store/aitools?utm_source=appdmg&utm_medium=allapp&utm_campaign=aitool" = "https://www.pdfreaderpro.com/de/store/aitools?utm_source=appdmg&utm_medium=allapp&utm_campaign=aitool";
+"https://www.pdfreaderpro.com/store?mode=edu&utm_source=appdmg&utm_medium=toptbr&utm_campaign=edu" = "https://www.pdfreaderpro.com/de/store?mode=edu&utm_source=appdmg&utm_medium=toptbr&utm_campaign=edu";
+

+ 7 - 0
PDF Office/PDF Master/Strings/fr.lproj/Localizable.strings

@@ -2862,3 +2862,10 @@
 "Contact Support" = "Contactez le support";
 "Contact Support" = "Contactez le support";
 "You can unbind your license through our website." = "Vous pouvez dissocier votre licence via notre site Web.";
 "You can unbind your license through our website." = "Vous pouvez dissocier votre licence via notre site Web.";
 "You have reached the maximum number of unbindings, please contact us." = "Vous avez atteint le nombre maximum de déliaisons, merci de nous contacter.";
 "You have reached the maximum number of unbindings, please contact us." = "Vous avez atteint le nombre maximum de déliaisons, merci de nous contacter.";
+
+//链接处理
+"https://www.pdfreaderpro.com/store?utm_source=appdmg&utm_medium=pricingcard&utm_campaign=upgrade" = "https://www.pdfreaderpro.com/fr/store?utm_source=appdmg&utm_medium=pricingcard&utm_campaign=upgrade";
+"https://www.pdfreaderpro.com/store/upgrade?utm_source=appdmg&utm_medium=toptbr&utm_campaign=pdftooffice" = "https://www.pdfreaderpro.com/fr/store/upgrade?utm_source=appdmg&utm_medium=toptbr&utm_campaign=pdftooffice";
+"https://www.pdfreaderpro.com/store/pdf-pro-permanent-cross-platform-package?utm_source=appdmg&utm_medium=toptbr&utm_campaign=crossplatform" = "https://www.pdfreaderpro.com/fr/store/pdf-pro-permanent-cross-platform-package?utm_source=appwindows&utm_medium=toptbr&utm_campaign=crossplatform";
+"https://www.pdfreaderpro.com/store/aitools?utm_source=appdmg&utm_medium=allapp&utm_campaign=aitool" = "https://www.pdfreaderpro.com/fr/store/aitools?utm_source=appdmg&utm_medium=allapp&utm_campaign=aitool";
+"https://www.pdfreaderpro.com/store?mode=edu&utm_source=appdmg&utm_medium=toptbr&utm_campaign=edu" = "https://www.pdfreaderpro.com/fr/store?mode=edu&utm_source=appdmg&utm_medium=toptbr&utm_campaign=edu";

+ 7 - 0
PDF Office/PDF Master/Strings/ja.lproj/Localizable.strings

@@ -3054,3 +3054,10 @@
 "Contact Support" = "サポート問い合わせ先";
 "Contact Support" = "サポート問い合わせ先";
 "You can unbind your license through our website." = "当社 Web サイトからライセンスのバインドを解除できます。";
 "You can unbind your license through our website." = "当社 Web サイトからライセンスのバインドを解除できます。";
 "You have reached the maximum number of unbindings, please contact us." = "バインド解除の最大数に達しました。お問い合わせください。";
 "You have reached the maximum number of unbindings, please contact us." = "バインド解除の最大数に達しました。お問い合わせください。";
+
+//链接处理
+"https://www.pdfreaderpro.com/store?utm_source=appdmg&utm_medium=pricingcard&utm_campaign=upgrade" = "https://www.pdfreaderpro.com/ja/store?utm_source=appdmg&utm_medium=pricingcard&utm_campaign=upgrade";
+"https://www.pdfreaderpro.com/store/upgrade?utm_source=appdmg&utm_medium=toptbr&utm_campaign=pdftooffice" = "https://www.pdfreaderpro.com/ja/store/upgrade?utm_source=appdmg&utm_medium=toptbr&utm_campaign=pdftooffice";
+"https://www.pdfreaderpro.com/store/pdf-pro-permanent-cross-platform-package?utm_source=appdmg&utm_medium=toptbr&utm_campaign=crossplatform" = "https://www.pdfreaderpro.com/ja/store/pdf-pro-permanent-cross-platform-package?utm_source=appwindows&utm_medium=toptbr&utm_campaign=crossplatform";
+"https://www.pdfreaderpro.com/store/aitools?utm_source=appdmg&utm_medium=allapp&utm_campaign=aitool" = "https://www.pdfreaderpro.com/ja/store/aitools?utm_source=appdmg&utm_medium=allapp&utm_campaign=aitool";
+"https://www.pdfreaderpro.com/store?mode=edu&utm_source=appdmg&utm_medium=toptbr&utm_campaign=edu" = "https://www.pdfreaderpro.com/ja/store?mode=edu&utm_source=appdmg&utm_medium=toptbr&utm_campaign=edu";

+ 7 - 0
PDF Office/PDF Master/Strings/ru.lproj/Localizable.strings

@@ -2927,3 +2927,10 @@
 "Contact Support" = "Контактная поддержка";
 "Contact Support" = "Контактная поддержка";
 "You can unbind your license through our website." = "Вы можете отвязать лицензию через наш сайт.";
 "You can unbind your license through our website." = "Вы можете отвязать лицензию через наш сайт.";
 "You have reached the maximum number of unbindings, please contact us." = "Вы достигли максимального количества отвязок, свяжитесь с нами.";
 "You have reached the maximum number of unbindings, please contact us." = "Вы достигли максимального количества отвязок, свяжитесь с нами.";
+
+//链接处理
+"https://www.pdfreaderpro.com/store?utm_source=appdmg&utm_medium=pricingcard&utm_campaign=upgrade" = "https://www.pdfreaderpro.com/ru/store?utm_source=appdmg&utm_medium=pricingcard&utm_campaign=upgrade";
+"https://www.pdfreaderpro.com/store/upgrade?utm_source=appdmg&utm_medium=toptbr&utm_campaign=pdftooffice" = "https://www.pdfreaderpro.com/ru/store/upgrade?utm_source=appdmg&utm_medium=toptbr&utm_campaign=pdftooffice";
+"https://www.pdfreaderpro.com/store/pdf-pro-permanent-cross-platform-package?utm_source=appdmg&utm_medium=toptbr&utm_campaign=crossplatform" = "https://www.pdfreaderpro.com/ru/store/pdf-pro-permanent-cross-platform-package?utm_source=appwindows&utm_medium=toptbr&utm_campaign=crossplatform";
+"https://www.pdfreaderpro.com/store/aitools?utm_source=appdmg&utm_medium=allapp&utm_campaign=aitool" = "https://www.pdfreaderpro.com/ru/store/aitools?utm_source=appdmg&utm_medium=allapp&utm_campaign=aitool";
+"https://www.pdfreaderpro.com/store?mode=edu&utm_source=appdmg&utm_medium=toptbr&utm_campaign=edu" = "https://www.pdfreaderpro.com/ru/store?mode=edu&utm_source=appdmg&utm_medium=toptbr&utm_campaign=edu";

+ 7 - 2
PDF Office/PDF Master/Strings/zh-Hans.lproj/Localizable.strings

@@ -2799,9 +2799,7 @@
 "Upgrade to Cross-platform License" = "升级为跨平台序列码";
 "Upgrade to Cross-platform License" = "升级为跨平台序列码";
 
 
 "minute(s)"  = "分钟";
 "minute(s)"  = "分钟";
-"https://www.pdfreaderpro.com/store?mode=edu" = "https://www.pdfreaderpro.com/zh-cn/store?mode=edu";
 "Education Discount" = "教育优惠专享折扣";
 "Education Discount" = "教育优惠专享折扣";
-"https://www.pdfreaderpro.com/store?mode=edu#utm_source=mac_app&utm_medium=pdf_pro_dmg&utm_content=menu_bar_click" = "https://www.pdfreaderpro.com/zh-cn/store?mode=edu#utm_source=mac_app&utm_medium=pdf_pro_dmg&utm_content=menu_bar_click";
 
 
 "Free Trial All Features for 7 days!" = "7天免费试用全功能";
 "Free Trial All Features for 7 days!" = "7天免费试用全功能";
 "Newly updated PDF Reader Pro for you. Click “Start Free Trial” to enjoy all premium features!\nEdit, convert, organize, compare, secure, and OCR your PDFs totally free!" = "免费体验全新升级的PDF Reader Pro。点击“免费试用”解锁全功能。\n轻松编辑,转换,组织,对比,OCR,加密PDF文件!";
 "Newly updated PDF Reader Pro for you. Click “Start Free Trial” to enjoy all premium features!\nEdit, convert, organize, compare, secure, and OCR your PDFs totally free!" = "免费体验全新升级的PDF Reader Pro。点击“免费试用”解锁全功能。\n轻松编辑,转换,组织,对比,OCR,加密PDF文件!";
@@ -3964,3 +3962,10 @@
 "Contact Support" = "联系客服";
 "Contact Support" = "联系客服";
 "You can unbind your license through our website." = "您可以通过我们的官网解绑您的序列码。";
 "You can unbind your license through our website." = "您可以通过我们的官网解绑您的序列码。";
 "You have reached the maximum number of unbindings, please contact us." = "您已达到最大解绑次数,请联系我们。";
 "You have reached the maximum number of unbindings, please contact us." = "您已达到最大解绑次数,请联系我们。";
+
+//链接处理
+"https://www.pdfreaderpro.com/store?utm_source=appdmg&utm_medium=pricingcard&utm_campaign=upgrade" = "https://www.pdfreaderpro.com/zh-cn/store?utm_source=appdmg&utm_medium=pricingcard&utm_campaign=upgrade";
+"https://www.pdfreaderpro.com/store/upgrade?utm_source=appdmg&utm_medium=toptbr&utm_campaign=pdftooffice" = "https://www.pdfreaderpro.com/zh-cn/store/upgrade?utm_source=appdmg&utm_medium=toptbr&utm_campaign=pdftooffice";
+"https://www.pdfreaderpro.com/store/pdf-pro-permanent-cross-platform-package?utm_source=appdmg&utm_medium=toptbr&utm_campaign=crossplatform" = "https://www.pdfreaderpro.com/zh-cn/store/pdf-pro-permanent-cross-platform-package?utm_source=appdmg&utm_medium=toptbr&utm_campaign=crossplatform";
+"https://www.pdfreaderpro.com/store/aitools?utm_source=appdmg&utm_medium=allapp&utm_campaign=aitool" = "https://www.pdfreaderpro.com/zh-cn/store/aitools?utm_source=appdmg&utm_medium=allapp&utm_campaign=aitool";
+"https://www.pdfreaderpro.com/store?mode=edu&utm_source=appdmg&utm_medium=toptbr&utm_campaign=edu" = "https://www.pdfreaderpro.com/zh-cn/store?mode=edu&utm_source=appdmg&utm_medium=toptbr&utm_campaign=edu";

+ 7 - 0
PDF Office/PDF Master/Strings/zh-Hant.lproj/Localizable.strings

@@ -4095,3 +4095,10 @@
 "Contact Support" = "聯絡客服";
 "Contact Support" = "聯絡客服";
 "You can unbind your license through our website." = "您可以透過我們的官網解讀您的序號。";
 "You can unbind your license through our website." = "您可以透過我們的官網解讀您的序號。";
 "You have reached the maximum number of unbindings, please contact us." = "您已達到最大解綁次數,請與我們聯絡。";
 "You have reached the maximum number of unbindings, please contact us." = "您已達到最大解綁次數,請與我們聯絡。";
+
+//链接处理
+"https://www.pdfreaderpro.com/store?utm_source=appdmg&utm_medium=pricingcard&utm_campaign=upgrade" = "https://www.pdfreaderpro.com/zh-tw/store?utm_source=appdmg&utm_medium=pricingcard&utm_campaign=upgrade";
+"https://www.pdfreaderpro.com/store/upgrade?utm_source=appdmg&utm_medium=toptbr&utm_campaign=pdftooffice" = "https://www.pdfreaderpro.com/zh-tw/store/upgrade?utm_source=appdmg&utm_medium=toptbr&utm_campaign=pdftooffice";
+"https://www.pdfreaderpro.com/store/pdf-pro-permanent-cross-platform-package?utm_source=appdmg&utm_medium=toptbr&utm_campaign=crossplatform" = "https://www.pdfreaderpro.com/zh-tw/store/pdf-pro-permanent-cross-platform-package?utm_source=appdmg&utm_medium=toptbr&utm_campaign=crossplatform";
+"https://www.pdfreaderpro.com/store/aitools?utm_source=appdmg&utm_medium=allapp&utm_campaign=aitool" = "https://www.pdfreaderpro.com/zh-tw/store/aitools?utm_source=appdmg&utm_medium=allapp&utm_campaign=aitool";
+"https://www.pdfreaderpro.com/store?mode=edu&utm_source=appdmg&utm_medium=toptbr&utm_campaign=edu" = "https://www.pdfreaderpro.com/zh-tw/store?mode=edu&utm_source=appdmg&utm_medium=toptbr&utm_campaign=edu";

+ 16 - 0
PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

@@ -2848,6 +2848,9 @@
 		BB135C2A29B6CD9A00FD5965 /* KMTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB135C2929B6CD9A00FD5965 /* KMTools.swift */; };
 		BB135C2A29B6CD9A00FD5965 /* KMTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB135C2929B6CD9A00FD5965 /* KMTools.swift */; };
 		BB135C2B29B6CD9A00FD5965 /* KMTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB135C2929B6CD9A00FD5965 /* KMTools.swift */; };
 		BB135C2B29B6CD9A00FD5965 /* KMTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB135C2929B6CD9A00FD5965 /* KMTools.swift */; };
 		BB135C2C29B6CD9A00FD5965 /* KMTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB135C2929B6CD9A00FD5965 /* KMTools.swift */; };
 		BB135C2C29B6CD9A00FD5965 /* KMTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB135C2929B6CD9A00FD5965 /* KMTools.swift */; };
+		BB1413682C69E6CA00BB8E35 /* KMURLConfigManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1413672C69E6CA00BB8E35 /* KMURLConfigManager.swift */; };
+		BB1413692C69E6CA00BB8E35 /* KMURLConfigManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1413672C69E6CA00BB8E35 /* KMURLConfigManager.swift */; };
+		BB14136A2C69E6CA00BB8E35 /* KMURLConfigManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1413672C69E6CA00BB8E35 /* KMURLConfigManager.swift */; };
 		BB146FAB299DC0D000784A6A /* GTLRBatchQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = BB146F2F299DC0CF00784A6A /* GTLRBatchQuery.m */; };
 		BB146FAB299DC0D000784A6A /* GTLRBatchQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = BB146F2F299DC0CF00784A6A /* GTLRBatchQuery.m */; };
 		BB146FAC299DC0D000784A6A /* GTLRBatchQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = BB146F2F299DC0CF00784A6A /* GTLRBatchQuery.m */; };
 		BB146FAC299DC0D000784A6A /* GTLRBatchQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = BB146F2F299DC0CF00784A6A /* GTLRBatchQuery.m */; };
 		BB146FAD299DC0D000784A6A /* GTLRBatchQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = BB146F2F299DC0CF00784A6A /* GTLRBatchQuery.m */; };
 		BB146FAD299DC0D000784A6A /* GTLRBatchQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = BB146F2F299DC0CF00784A6A /* GTLRBatchQuery.m */; };
@@ -6500,6 +6503,7 @@
 		BB13314D2AD78DC0008F6791 /* KMPDFMergeSizeTabelViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPDFMergeSizeTabelViewCell.swift; sourceTree = "<group>"; };
 		BB13314D2AD78DC0008F6791 /* KMPDFMergeSizeTabelViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPDFMergeSizeTabelViewCell.swift; sourceTree = "<group>"; };
 		BB1331532AD7A6A1008F6791 /* KMFileAttribute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMFileAttribute.swift; sourceTree = "<group>"; };
 		BB1331532AD7A6A1008F6791 /* KMFileAttribute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMFileAttribute.swift; sourceTree = "<group>"; };
 		BB135C2929B6CD9A00FD5965 /* KMTools.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMTools.swift; sourceTree = "<group>"; };
 		BB135C2929B6CD9A00FD5965 /* KMTools.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMTools.swift; sourceTree = "<group>"; };
+		BB1413672C69E6CA00BB8E35 /* KMURLConfigManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMURLConfigManager.swift; sourceTree = "<group>"; };
 		BB146F2F299DC0CF00784A6A /* GTLRBatchQuery.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLRBatchQuery.m; sourceTree = "<group>"; };
 		BB146F2F299DC0CF00784A6A /* GTLRBatchQuery.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLRBatchQuery.m; sourceTree = "<group>"; };
 		BB146F30299DC0CF00784A6A /* GTLRService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLRService.m; sourceTree = "<group>"; };
 		BB146F30299DC0CF00784A6A /* GTLRService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLRService.m; sourceTree = "<group>"; };
 		BB146F31299DC0CF00784A6A /* GTLRErrorObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLRErrorObject.m; sourceTree = "<group>"; };
 		BB146F31299DC0CF00784A6A /* GTLRErrorObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTLRErrorObject.m; sourceTree = "<group>"; };
@@ -11200,6 +11204,14 @@
 			path = Tools;
 			path = Tools;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
+		BB1413662C69E6AB00BB8E35 /* URLManager */ = {
+			isa = PBXGroup;
+			children = (
+				BB1413672C69E6CA00BB8E35 /* KMURLConfigManager.swift */,
+			);
+			path = URLManager;
+			sourceTree = "<group>";
+		};
 		BB146F2E299DC0CF00784A6A /* GTLRClass */ = {
 		BB146F2E299DC0CF00784A6A /* GTLRClass */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
@@ -11648,6 +11660,7 @@
 		BB2C6A7128F2652500478A33 /* Class */ = {
 		BB2C6A7128F2652500478A33 /* Class */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				BB1413662C69E6AB00BB8E35 /* URLManager */,
 				BB031B3D2C47BB070099F7AD /* Tools */,
 				BB031B3D2C47BB070099F7AD /* Tools */,
 				AD7D5C7F2B8ECC74006562CD /* Parsers */,
 				AD7D5C7F2B8ECC74006562CD /* Parsers */,
 				BB0FE01F2B734DD1001E0F88 /* AIInfo */,
 				BB0FE01F2B734DD1001E0F88 /* AIInfo */,
@@ -16360,6 +16373,7 @@
 				89E4E7352964148E002DBA6F /* KMAnnotationPropertiesViewController.m in Sources */,
 				89E4E7352964148E002DBA6F /* KMAnnotationPropertiesViewController.m in Sources */,
 				9F221ED729A9EC0900978A59 /* KMFillSignTextPanel.swift in Sources */,
 				9F221ED729A9EC0900978A59 /* KMFillSignTextPanel.swift in Sources */,
 				BBF8A4032AE8E10100788BAC /* KMBatchConvertParameter.swift in Sources */,
 				BBF8A4032AE8E10100788BAC /* KMBatchConvertParameter.swift in Sources */,
+				BB1413682C69E6CA00BB8E35 /* KMURLConfigManager.swift in Sources */,
 				9FA607D928F8227500B46586 /* KMBox.swift in Sources */,
 				9FA607D928F8227500B46586 /* KMBox.swift in Sources */,
 				BBE9D0922AF0A85C002E83CE /* KMBatchOperation.swift in Sources */,
 				BBE9D0922AF0A85C002E83CE /* KMBatchOperation.swift in Sources */,
 				BBB612AD2AF4B9E4000F3724 /* KMWatermarkCollectionViewItem.swift in Sources */,
 				BBB612AD2AF4B9E4000F3724 /* KMWatermarkCollectionViewItem.swift in Sources */,
@@ -18209,6 +18223,7 @@
 				BB67EE1E2B54FFEF00573BF0 /* ASIFormDataRequest.m in Sources */,
 				BB67EE1E2B54FFEF00573BF0 /* ASIFormDataRequest.m in Sources */,
 				ADE3C1AC29A4779E00793B13 /* KMPrintAccessoryController.swift in Sources */,
 				ADE3C1AC29A4779E00793B13 /* KMPrintAccessoryController.swift in Sources */,
 				BB10FAF72AFE2C2900F18D65 /* KMNumberArrayFormatter.swift in Sources */,
 				BB10FAF72AFE2C2900F18D65 /* KMNumberArrayFormatter.swift in Sources */,
+				BB1413692C69E6CA00BB8E35 /* KMURLConfigManager.swift in Sources */,
 				BBD7FE082A13241C00F96075 /* KMOutlineEditViewController.swift in Sources */,
 				BBD7FE082A13241C00F96075 /* KMOutlineEditViewController.swift in Sources */,
 				BB1B0AF32B4FC6E900889528 /* KMFunctionGuideNameItemView.swift in Sources */,
 				BB1B0AF32B4FC6E900889528 /* KMFunctionGuideNameItemView.swift in Sources */,
 				AD055EC52B8846EB0035F824 /* SKOutlineView.m in Sources */,
 				AD055EC52B8846EB0035F824 /* SKOutlineView.m in Sources */,
@@ -18816,6 +18831,7 @@
 				ADDF83792B391A5D00A81A4E /* CDSignatureCertificateCustomViewController.swift in Sources */,
 				ADDF83792B391A5D00A81A4E /* CDSignatureCertificateCustomViewController.swift in Sources */,
 				BB9599C52B31647B0062D346 /* KMRedactPropertiesWindowController.swift in Sources */,
 				BB9599C52B31647B0062D346 /* KMRedactPropertiesWindowController.swift in Sources */,
 				AD2D74AF29F0CEB300EDC5E4 /* KMCancellationWindowController.swift in Sources */,
 				AD2D74AF29F0CEB300EDC5E4 /* KMCancellationWindowController.swift in Sources */,
+				BB14136A2C69E6CA00BB8E35 /* KMURLConfigManager.swift in Sources */,
 				ADE86AB02B03438400414DFA /* KMWatermarkWindowController.swift in Sources */,
 				ADE86AB02B03438400414DFA /* KMWatermarkWindowController.swift in Sources */,
 				AD199DF12B23121000D56FEE /* KMPrintPamphletView.swift in Sources */,
 				AD199DF12B23121000D56FEE /* KMPrintPamphletView.swift in Sources */,
 				AD0FA4F229A8580D00EDEB50 /* KMComparativeTableView.swift in Sources */,
 				AD0FA4F229A8580D00EDEB50 /* KMComparativeTableView.swift in Sources */,

+ 0 - 96
PDF Office/PDF Reader Pro.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -1515,102 +1515,6 @@
             landmarkType = "7">
             landmarkType = "7">
          </BreakpointContent>
          </BreakpointContent>
       </BreakpointProxy>
       </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "EF828638-8DF8-4BFA-A633-12FBC64DBA36"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/AIInfo/AIUserInfoController/AIUserInfoController.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "316"
-            endingLineNumber = "316"
-            landmarkName = "newGuideAction(_:)"
-            landmarkType = "7">
-            <Locations>
-               <Location
-                  uuid = "EF828638-8DF8-4BFA-A633-12FBC64DBA36 - 8b6eecfc45e5d4a2"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "LynxPDF_Editor.AIUserInfoController.newGuideAction(Any) -&gt; ()"
-                  moduleName = "LynxPDF Editor"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/Class/AIInfo/AIUserInfoController/AIUserInfoController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "316"
-                  endingLineNumber = "316"
-                  offsetFromSymbolStart = "64">
-               </Location>
-               <Location
-                  uuid = "EF828638-8DF8-4BFA-A633-12FBC64DBA36 - df450ff199647145"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Reader_Pro.AIUserInfoController.newGuideAction(Any) -&gt; ()"
-                  moduleName = "PDF Reader Pro"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/Class/AIInfo/AIUserInfoController/AIUserInfoController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "316"
-                  endingLineNumber = "316"
-                  offsetFromSymbolStart = "64">
-               </Location>
-            </Locations>
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "3AE04095-799F-4725-9E5E-920423664ECE"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/AIInfo/AIUserInfoController/AIUserInfoController.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "323"
-            endingLineNumber = "323"
-            landmarkName = "purchaseAction(_:)"
-            landmarkType = "7">
-            <Locations>
-               <Location
-                  uuid = "3AE04095-799F-4725-9E5E-920423664ECE - f2ef2f0217998e29"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "LynxPDF_Editor.AIUserInfoController.purchaseAction(LynxPDF_Editor.KMButton) -&gt; ()"
-                  moduleName = "LynxPDF Editor"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/Class/AIInfo/AIUserInfoController/AIUserInfoController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "323"
-                  endingLineNumber = "323"
-                  offsetFromSymbolStart = "72">
-               </Location>
-               <Location
-                  uuid = "3AE04095-799F-4725-9E5E-920423664ECE - e8a031b1aa8efdfd"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Reader_Pro.AIUserInfoController.purchaseAction(PDF_Reader_Pro.KMButton) -&gt; ()"
-                  moduleName = "PDF Reader Pro"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/Class/AIInfo/AIUserInfoController/AIUserInfoController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "323"
-                  endingLineNumber = "323"
-                  offsetFromSymbolStart = "72">
-               </Location>
-            </Locations>
-         </BreakpointContent>
-      </BreakpointProxy>
       <BreakpointProxy
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
          <BreakpointContent