南鑫林 5 роки тому
батько
коміт
8006733782

+ 6 - 0
RainbowPlanet/RainbowPlanet/AppDelegate/AppDelegate.swift

@@ -22,6 +22,12 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
         return true
     }
     
+    
+    /// 精要终止程序
+    func applicationWillTerminate(_ application: UIApplication) {
+        KingfisherManager.shared.cache.clearDiskCache()
+    }
+    
     func applicationDidReceiveMemoryWarning(_ application: UIApplication) {
         KingfisherManager.shared.cache.clearDiskCache()
         KingfisherManager.shared.cache.clearMemoryCache()

+ 7 - 0
RainbowPlanet/RainbowPlanet/Modules/H5Modules/H5Common/ViewController/H5CommonViewController.swift

@@ -44,6 +44,13 @@ class H5CommonViewController: BaseNewWebViewController {
     //MARK: - view
     override func setupViews() {
         super.setupViews()
+        if #available(iOS 11.0, *) {
+            UIScrollView.appearance().contentInsetAdjustmentBehavior = .always
+        } else {
+            if self.responds(to: #selector(setter: self.automaticallyAdjustsScrollViewInsets)) {
+                self.automaticallyAdjustsScrollViewInsets = true
+            }
+        }
         UINavigationBar.appearance().tintColor = UIColor.black
         
     }

+ 8 - 0
RainbowPlanet/RainbowPlanet/Modules/PublishModule/PublishArticle/ViewController/PublishArticleViewController.swift

@@ -24,6 +24,13 @@ class PublishArticleViewController: BaseNewWebViewController {
         super.setupViews()
         UINavigationBar.appearance().tintColor = UIColor.black
         navigationBar.addSubview(publishButton)
+        if #available(iOS 11.0, *) {
+            UIScrollView.appearance().contentInsetAdjustmentBehavior = .always
+        } else {
+            if self.responds(to: #selector(setter: self.automaticallyAdjustsScrollViewInsets)) {
+                self.automaticallyAdjustsScrollViewInsets = true
+            }
+        }
         
     }
     
@@ -62,6 +69,7 @@ class PublishArticleViewController: BaseNewWebViewController {
                 NotificationCenter.default.post(name: NSNotification.Name("PublishPostSuccess"), object: nil)
                 BaseTabbarViewController.shared.v1.reloadSegmentedFollowView()
                 SwiftProgressHUD.shared().hide()
+                self?.tabBarController?.selectedIndex = 0
                 self?.navigationController?.popViewController(animated: true)
                 break
             default :

+ 19 - 13
RainbowPlanet/RainbowPlanet/Tools/WKWebView/NXLWebView.swift

@@ -22,7 +22,7 @@ class NXLWebView: BaseView {
         case HTMLName(name:String)
         
         /// 加载POST请求(url:请求URL,parameters:请求参数)
-        case POST(url:String,parameters: [String:Any])
+        case URLStringPOST(url:String,parameters: [String:Any])
     }
     
     deinit {
@@ -30,11 +30,23 @@ class NXLWebView: BaseView {
         wkWebView.removeObserver(self, forKeyPath: "estimatedProgress")
         wkWebView.removeObserver(self, forKeyPath: "title")
         wkWebView.clearHTMLCache()
+        if observe != nil {
+            NotificationCenter.default.removeObserver(observe!)
+        }
     }
+    weak var observe : NSObjectProtocol?
 
     override func setupViews() {
         addSubview(wkWebView)
         addSubview(progressView)
+        //关闭程序
+        observe = NotificationCenter.default.addObserver(forName: UIApplication.willTerminateNotification, object: nil, queue: OperationQueue.main, using: {
+            [weak self] (notification) in
+            self?.wkWebView.clearWKCookies()
+            self?.wkWebView.clearHTMLCache()
+            self?.wkWebView.clearWebCacheFinish({ (finish, error) in})
+            self?.wkWebView.clearCacheAndCookie()
+        })
     }
     
     override func setupLayouts() {
@@ -106,7 +118,7 @@ extension NXLWebView {
             loadRequest(urlRequest: URLRequest(url: URL(string: urlStr) ?? URL(string: "about:blank")!))
         case .HTMLName(let name):
             loadLocalHTML(htmlName: name)
-        case .POST(let urlStr, parameters: let params):
+        case .URLStringPOST(let urlStr, parameters: let params):
             loadRequest(urlRequest: URLRequest(url: URL(string: urlStr) ?? URL(string: "about:blank")!), parameters: params)
         }
     }
@@ -211,15 +223,11 @@ extension NXLWebView : WKNavigationDelegate {
         let response = navigationResponse.response as! HTTPURLResponse
         if response.url?.scheme?.lowercased().contains("http") ?? false {
             let cookies = HTTPCookie.cookies(withResponseHeaderFields: response.allHeaderFields as! [String : String], for: response.url!)
-            if #available(iOS 11.0, *) {
-                 //浏览器自动存储cookie
-            }else {
-                DispatchQueue.global().sync {
-                    [weak self] in
-                    if !cookies.isEmpty {
-                        for cookie in cookies {
-                            self?.wkWebView.insert(cookie)
-                        }
+            DispatchQueue.global().sync {
+                [weak self] in
+                if !cookies.isEmpty {
+                    for cookie in cookies {
+                        self?.wkWebView.insert(cookie)
                     }
                 }
             }
@@ -243,5 +251,3 @@ extension NXLWebView : WKNavigationDelegate {
     }
     
 }
-
-

+ 3 - 0
RainbowPlanet/RainbowPlanet/Tools/WKWebView/PAWebViewCache/WKWebView+PAWebCache.h

@@ -16,4 +16,7 @@
 /** 清理缓存的方法,这个方法会清除缓存类型为HTML类型的文件*/
 - (void)clearHTMLCache;
 
+/**清除缓存和cookie*/
+- (void)clearCacheAndCookie;
+
 @end

+ 23 - 0
RainbowPlanet/RainbowPlanet/Tools/WKWebView/PAWebViewCache/WKWebView+PAWebCache.m

@@ -92,4 +92,27 @@
     }
 }
 
+/**清除缓存和cookie*/
+- (void)clearCacheAndCookie {
+    //清除cookies
+    NSHTTPCookie *cookie;
+    NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
+    for (cookie in [storage cookies]){
+        [storage deleteCookie:cookie];
+    }
+    if (@available(iOS 11.0, *)) {
+        NSSet *websiteDataTypes = [NSSet setWithObject:WKWebsiteDataTypeCookies];
+        NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];
+        [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{
+        }];
+    }
+    
+    //清除UIWebView的缓存
+    [[NSURLCache sharedURLCache] removeAllCachedResponses];
+    NSURLCache * cache = [NSURLCache sharedURLCache];
+    [cache removeAllCachedResponses];
+    [cache setDiskCapacity:0];
+    [cache setMemoryCapacity:0];
+}
+
 @end