Post

Replies

Boosts

Views

Activity

Reply to Use a HTTP Proxy with WkWebView
any update? i found that you can use in WKURLSchemeHandler your cases. 1. add hook for webview @implementation WKWebView (Hook) + (void)load { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ Method origin = class_getClassMethod(self, @selector(handlesURLScheme:)); Method hook = class_getClassMethod(self, @selector(cdz_handlesURLScheme:)); method_exchangeImplementations(origin, hook); }); } + (BOOL)cdz_handlesURLScheme:(NSString *)urlScheme { if ([urlScheme isEqualToString:@"http"] || [urlScheme isEqualToString:@"https"]) { return NO; } return [self cdz_handlesURLScheme:urlScheme]; } @end 2. set url schemehandler extension WKWebViewConfiguration{ class func proxyConifg() -> WKWebViewConfiguration{ let config = WKWebViewConfiguration() let handler = HttpProxyHandler() config.setURLSchemeHandler(handler, forURLScheme: "http") config.setURLSchemeHandler(handler, forURLScheme: "https") return config } } 3. write proxy logic in your WKURLSchemeHandler func webView(_ webView: WKWebView, start urlSchemeTask: WKURLSchemeTask) { let proxy_server = "YourProxyServer" // proxy server let proxy_port = 1234 // your port let hostKey = kCFNetworkProxiesHTTPProxy as String let portKey = kCFNetworkProxiesHTTPPort as String let proxyDict:[String:Any] = [kCFNetworkProxiesHTTPEnable as String: true, hostKey:proxy_server, portKey: proxy_port] let config = URLSessionConfiguration.ephemeral config.connectionProxyDictionary = proxyDict let defaultSession = URLSession(configuration: config) dataTask = defaultSession.dataTask(with: urlSchemeTask.request, completionHandler: {[weak urlSchemeTask] (data, response, error) in /// fix crash error guard let urlSchemeTask = urlSchemeTask else { return } if let error = error { urlSchemeTask.didFailWithError(error) } else { if let response = response { urlSchemeTask.didReceive(response) } if let data = data { urlSchemeTask.didReceive(data) } urlSchemeTask.didFinish() } }) dataTask?.resume() } :)
May ’23
Reply to Auto-renewable subscriptions: 'is_in_intro_offer_period' in the local receipt with free trial period
is_in_intro_offer_period is not work anymore and the verifyReceipt endpoint is also deprecated. https://developer.apple.com/documentation/appstorereceipts/requestbody and, If you need to determine whether the current subscription is within the free trial period, you can call check if (expires_date_ms - purchase_date_ms) is less than the specified period. https://developer.apple.com/documentation/appstoreserverapi/jwstransactiondecodedpayload let purchase_date_ms = parseInt(latest_transcation.purchaseDate) let expires_date_ms = parseInt(latest_transcation.expiresDate) let duration = expires_date_ms - purchase_date_ms var isInIntroOfferPeriod = false // free period in your introoffer // for example: 3 days free trial in my yearly subscription if (duration > 0 && duration <= 3*86400000) { isInIntroOfferPeriod = true }
Jul ’23