从微信分享图片说起
直接上图(可以参考openshare这个框架)
原理图
第一步:把图片而二进制存入字典,其他参数也存入字典,字典外层再包一层以微信分配的appid为键的字典,二进制后存入粘贴板
第二步:![]()
通过打开这个链接,可以跳转到微信.微信会验证此处的appid是否在其官网注册过,并且根据此appid从粘贴板拿到图片和参数,进行参数校验,而图片鉴黄则会在发送分享上传服务器后进行.
这里需要注意:iOS10.0之后app需要配置要打开的app的具体的名字才能跳转,否则无权跳转
plist中需添加微信的名字
第三步:微信需要从粘贴板取数据,进行参数校验,并进入自己的分享逻辑.数据发送到自己的服务器.同时微信把分享成功的参数写入并覆盖第一步的粘贴板
第四部:通知我们的app去查看分享是否成功.这一点是如何做到的呢?首先我们为自己的app取一个名字![]()
,这就是微信给我们分配的appid加上前缀wx,微信当然知道这个名字!微信可以通过这个名字,打开我们的app,我们的app监听用这个名字唤起我们url,就知道是微信这哥们,然后去粘贴板看看结果,对结果进行处理.这样流程就走完了
举一反三
通过openshare的源代码,我们可以知道,阿里支付,微信支付等跨app的实现均是通过这一逻辑实现的.由此我们以后在做跨app的数据传输的时候,粘贴板结合命名的思路是很成熟.
事实上,如果只是传递很少的数据,可以把数据直接拼接在url的某个参数上,这样连粘贴板都不需要使用了.
拓展与问题
微信虽然知道我们app的名字,考虑到使用微信分享的sdk那么多,微信要如何配置所有这些名字的权限呢?![]()
难道只需要配置wx即可吗?后面的appid参数可以缺省吗?这一步还有待实验证实.

plist中需添加微信的名字










网友评论