解析分享SDK怎样传图片数据给分享平台
来源:互联网 发布:淘宝闲鱼怎么搜索 编辑:程序博客网 时间:2024/06/06 01:51
今天看了下ShareSDK,一直比较好奇它是怎样把分享的图片数据传到要分享的平台中去的, 用UIApplication openUrl:这个方法是可以通过urlscheme传数据,但传的是字符串,长度也有限制,把图片转为字符串来传递不会超长?
带着疑问,首先,用真机调试,我在Debug area那里,暂停程序,出来lldb控制台后,输入命令:
dis -n "-[UIApplication openURL:]"
看到UIApplication openUrl: 方法地址是 0x18effb840,
然后调用 breakpoint set -a 0x18effb840 在函数开始点打个断点,
接下来,正常调用ShareSdk来分享(我这里是分享到手机QQ),记得要传入图片数据,
接着,发现ShareSDK果然调用了UIApplication openUrl:,断点执行了。
可以看到上一步是UIApplication(SSDK) SSDKOpenURL: , 嗯,是ShareSdk在调用
我们知道,objective-c调用函数,其实用objc_msgSend机制(有兴趣的同学请自行参考其它资料),在真正被调用的函数中,第一个参数是调用者, 而寄存器x0保存的就是第一个参数了。
看右边的 General purpose Registers, 查看系统寄存器,我们看下
先在x0那里点右键,选择Pring Description of “x0” ,
看到调用者确实是 UIApplication的一个实例
同理,打印x1,第二个参数是CMD, 指示传递的是哪个消息
获得地址,继续调用下面的方法打印对应内存
memory read -c100 0x000000010151bd0c
发现竟然不是openURL: 而是 SSDKOpenURL: ,出现这种情况,其实就是ShareSDK用了method_exchangeImplementations来替换掉原来的UIApplication openUrl:方法,然后发消息SSDKOpenURL:调回原来的openURL:函数(有兴趣的同学请自行参考Objective-c Method Swizzling相关资料),
再打印x2寄存器,也就我们写[UIApplication openUrl: (url) ]调用中的那个url参数了,
ok, 发现这段字符串是手机QQ的urlscheme,后面所带的数据也不长, 发现了description, title,这些字段,应该就是分享内容跟标题了,但字符串乱码,应该是经过了加密。
可惜上面没有发现跟分享图片相关的。
再仔细看,字符串中有这段
pasteboard指的是剪切板,难道图片数据在剪切板里?
继续在控制台中打印。
尝试打印了好几次后,终于发现
看到了 [UIPasteboard generalPasteboard].items
中有 tencent.mqq关键字,明显就是手机QQ用到的数据,后面的apiLargeData,跟着一大段二制数据,那这些明显就是分享的图片数据了。
在控制台Variables view中,用Add Expression: [UIPasteboard generalPasteboard].items[0] 方法打印这个items, 获取这个数据的地址,0x00000001704590e0,
但继续在控制台中这样打印
发现无法生成图片,可能这个图片不能直接变成UIImage类型,而是需要经过处理;有知道详情的同学,请告诉我怎样处理这个数据吧。
阅读全文
0 0
- 解析分享SDK怎样传图片数据给分享平台
- 友盟分享 分享图片给QQ
- 【干货分享】深入浅出解析大数据平台架构
- 分享文本内容给好友(系统分享,无需SDK)
- 微信JS-SDK实现自定义分享功能,分享给朋友,分享到QQ,分享到微博
- 淘宝数据分享平台战略
- 分享sdk
- 微信JS-SDK 修改分享标题 分享图片
- 不用微信SDK实现图片分享或文字分享
- iOS 微博 sdk 分享文字图片
- 微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈
- 微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈,后台实现
- 微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈
- android-shareSDK解析&自定义分享UI&分享到指定平台。
- QQ分享本地图片给好友
- 百斯特数据_互联网数据分享平台
- 大批量数据更新,分享给大家。
- 大数据平台安全建设方案分享
- 将list转换为数组
- 最小生成树Prim算法学习
- 浅谈PHP中的数组和JS中的数组
- 转 gdb参数及命令详解 (已整理) core dump调试
- JDBC相关(二):数据库连接池技术原理,使用详解和常见的数据库连接池
- 解析分享SDK怎样传图片数据给分享平台
- uva 129 Krypton Factor
- 高德地图集成
- 安卓oracle数据库连接
- 一步一步制作yaffs/yaffs2根文件系统(二)---安装BusyBox,构造/bin、/sbin、/usr、linuxrc
- J
- JAVA企业面试题精选 Servlet和JSP 41-48
- hadoop集群普通用户安装时,jps命令运行报错
- 乘坐公交(贪心算法)