一、問題描述 UMShareWebpageObject *obj = [UMShareWebpageObject shareObjectWithTitle:title descr:shareText thumImage:imgUrl];里面thumImage如果是本地圖片,分享的時候就能夠顯示圖片,但是如果換成http的網絡圖片地址,就無法顯示 |
二、解決方法
1.第一種更換成https
這種方法是很穩妥的辦法
2.第二種方法:
(1)如果你是原生開發且要分享的圖片鏈接已經在本地加載了的話,那么你就可以直接從緩存中取出圖片直接調用分享了
(2)如果是web界面分享的話,那么就很痛苦了。有以下兩種方案供參考:
第一種方案:先把http圖片鏈接加載成image,但是這種方法有涉及到同步執行可能卡頓問題 。
第二種方案:獲取到web界面所有img標簽的src地址,本地加載,調用分享的時候直接從緩存獲取,獲取不到賦個默認本地圖片。
三、本人就是采取的第二種方法種的方案二。具體實現如下:
由於我加載web采用的WKWebview,所以我在
-(void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation方法中實現img標簽本地加載,具體方法:
//設置JS獲取html內所有img標簽的src組成以,號隔開的字符串返回
[_wkWebView evaluateJavaScript:@"var str=new Array();"
"$('img').each(function(){str.push($(this).attr('src'));});"
"str.join(',');" completionHandler:^(id _Nullable response, NSError * _Nullable error) {
NSLog(@"%@",response);
NSArray *images = [response componentsSeparatedByString:@","];
if ([images isKindOfClass:[NSArray class]]) {
[images enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if ([obj rangeOfString:@"http"].location !=NSNotFound) {
[[SDWebImageManager sharedManager] downloadImageWithURL:[NSURL URLWithString:obj] options:(SDWebImageContinueInBackground) progress:^(NSInteger receivedSize, NSInteger expectedSize) {
} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
NSLog(@"+++%@",image);
}];
}
}];
}
}];
四、以上就是我的解決辦法,如果各位有什么更好的解決辦法求分享。