iOS 集成友盟分享圖片鏈接為http時無法加載問題解決


一、問題描述

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);

                     }];

                     

                 }

             }];

           

             

           

         }

    }];

 

 

四、以上就是我的解決辦法,如果各位有什么更好的解決辦法求分享。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM