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);
}];
}
}];
}
}];
四、以上就是我的解决办法,如果各位有什么更好的解决办法求分享。
iOS 集成友盟分享图片链接为http时无法加载问题解决的更多相关文章
- IOS 集成友盟分享
#import <Foundation/Foundation.h> @interface UMSocialSinaHandler : NSObject +(void)openSSOWith ...
- WP8 中使用HTML Agility Pack与友盟分享SDK遇到的 System.Xml.XPath加载问题
今晚在尝试使用友盟最新的社交分享SDK时,按照官方Demo,并未做多少多少改动,就是去除了对微信.脸书和推特的分享.然后运行之后就一直报错 : {System.IO.FileLoadException ...
- iOS开发-友盟分享(1)
1.集成友盟分享,需要先注册一个友盟账号,注册地址 友盟开发者平台官网 友盟集成文档 友盟sdk下载地址友盟sdk下载地址 2,成功下载sdk集成后,微信分享需要配置一下 新浪微博 之类到同样配置就 ...
- iOS开发——友盟分享
==========2016-01-29 更新=====刘成利 email:liu_cheng_li@qq.com========== 自己成功集成到公司的项目前,也已做了测试好的友盟分享demo 目 ...
- iOS开发-友盟分享(3)
iOS 友盟分享 这个主要是提到如何通过友盟去自定义分享的步骤: 一.肯定要去友盟官网下载最新的SDK包,然后将SDK导入到你的工程文件夹里面去: 二.注册友盟账号,将你的APP添加到你的账号里面然后 ...
- iOS开发-友盟分享使用(2)
1.友盟SDK提供功能:分享喜欢的东西到新浪微博.qq空间.为微信朋友圈等等等等社交圈. 2.友盟分享前期准备 (1)注册账号 去官网 (2)创建应用获取appkey 类似5556a53667e*** ...
- iOS集成友盟推送
之前有写过利用Python自己写一个推送服务器, 今天说下如果集成友盟的推送服务 在这之前我们需要做一些准备动作 #1. 注册一个App ID #2. Enable Push Notification ...
- android 集成友盟分享之后,想自定义分享面板的看过来
第一种情况 首先上传一张默认的友盟分享的效果图 看起来还不错,但是总是有这样那样的原因,需要我们对默认效果做出一些改变. 第二种情况 如果你想做出下面的效果: 或者这样的效果 : 总之上面的效果总是在 ...
- iOS关于友盟分享弹不出面板问题
在程序代理类中声明 [NSThread sleepForTimeInterval:10];//设置启动页面时间 [self.window makeKeyAndVisible]; [[UMSocialM ...
随机推荐
- 关于Intege.valueOf()的使用
原文链接:https://blog.csdn.net/weixin_37650458/article/details/85212730 1.Integer. valueOf()方法的作用 In ...
- 使用axios实现登录功能
1.创建一个login.vue页面 1.1写页面components/Login.vue 在 src/components 下创建 Login.vue 页面 <template> < ...
- 基于gin的golang web开发:docker
Golang天生适合运行在docker容器中,这得益于:Golang的静态编译,当在编译的时候关闭cgo的时候,可以完全不依赖系统环境. 一些基础 测试容器时我们经常需要进入容器查看运行情况,以下命令 ...
- java学生简单管理系统
1 //设一个班有n名学生,期末考试5门,编写程序评定学生奖学金 2 514 //要求打印输出一二等奖学金学生的学号,姓名和各科成绩 3 515 //总成绩超过全班总平均成绩20%一等奖学金,超过总平 ...
- canal部署
转载: https://blog.csdn.net/qq_30043755/article/details/83539116 最后的binlog最后被封装为这样的一个对象: com.alibaba.o ...
- Rest Framework:序列化组件
Django内置的serializers(把对象序列化成json字符串 from django.core import serializers def test(request): book_list ...
- C#(二)基础篇—操作符
2020-12-02 本随笔为个人复习巩固知识用,多从书上总结与理解得来,如有错误麻烦指正 1.数学操作符 int a=2,b=3,c=0; float d=0; c=a+b; //c=5 c++; ...
- 第11.22节 Python 中re模块的字符串分割器:split函数
一. 引言 在<第11.2节 Python 正则表达式支持函数概览>介绍了re模块的主要函数,在<第11.3节 Python正则表达式搜索支持函数search.match.fullm ...
- Thinkphp V5.X 远程代码执行漏洞 - POC(搬运)
文章来源:lsh4ck's Blog 原文链接: https://www.77169.com/html/237165.html Thinkphp 5.0.22 http://192.168.1.1 ...
- uniapp 微信授权登陆
准备工作: 1.微信开发者账号 2.AppId .AppSecret (这些可以在开放平台申请到) 第一步 添加移动应用,仔细添加上述信息: 审批通过后,即刻 第二步 打开uniapp,开启OAuth ...