UIWebView 仿微信長按掃描或者保存二維碼

? 對于這個需求,是退而求其次對的做法。第三方不能UIWebView里面調用微信直接支付。就弄了個掃碼支付。生成二維碼客戶自己掃碼。如果自己掃碼可能保存到相冊自己保存然后掃碼比較方便。

下面有幾個思路。

第一個思路:webView加載后截屏然后截取二維碼那個部分,但是對于多個二維碼就有問題。

第二個思路:webView加載后根據長按的位置獲取圖片 的imageURL,然后下載后,保存到本地。但是如果網絡不好比較慢的情況下特別慢體驗比較差。

第三個思路:webView加載后圖片等資源已經緩存到本地,直接根據imageURL去本地取圖片,速度比較快,體驗比較好點。


第一步:根據長按部分獲取圖片url

CGPoint touchPoint = [recognizer locationInView:self.webView];?

NSString *js = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", touchPoint.x, touchPoint.y];

?NSString *imageUrl = [self.webView stringByEvaluatingJavaScriptFromString:js];


第二步:從緩存中根據imageURL取圖片 用到的是RNCachingURLProtocol?這個第三方庫

NSString *fileName = [RNCachingURLProtocol cachePathForURLString:imageUrl];

RNCachedData *cache = [NSKeyedUnarchiver unarchiveObjectWithFile:fileName];

UIImage *image = [UIImage imageWithData:cache.data];


第三步:檢測是不是二維碼如果是保存到本地

CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:nil options:@{}];

NSArray *features = [detector featuresInImage:[CIImage imageWithCGImage:image.CGImage]];

if (features.count >= 1) {

return YES;

} else {

return NO;

}

收工。。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容