在Unity3D项目中接入ShareSDK实现安卓平台微信分享功能(可使用ShareSDK默认UI或自定义UI)
最近公司的大厅要重做,我协助主程一起制作新大厅和新框架,前面制作的编辑器也派上了用场。等全部功能做完后我会再写一个复盘,这两天主程在忙于写热更新的功能,所以把接入分享SDK功能的任务交给了我,ShareSDK官网的文档比较分散,而且关于Unity的文档比较简略,所以还是有不少的坑。写篇博客分享一下,并加强理解记忆。
第一步,先去ShareSDK的官网下载最新版本的ShareSDK(完全免费)。地址:http://www.mob.com/
我们选择ShareSDK For Unity3D,页面会直接跳转到GitHub,把最新版本的压缩包下载回来。

解压后会得到这个目录,使用Unity打开下面的文件夹可以看到官方的Demo项目。里面有大致的实现流程
初步接入SDK还是可以参照官方的文档,真的非常简单。文档地址:http://wiki.mob.com/Unity3D%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E6%8C%87%E5%8D%97/
我们直接把ShareSDK For U3D导进项目
首先我们要在官网注册一个账号,然后点击进入后台,创建一个新工程,再添加产品-选择ShareSDK。

这样我们就有了一个AppKey和一个AppSecret,把他们输入你Unity中挂载在物体上的ShareSDK脚本上

这时候我们会发现DevInfo下面会有很多的平台,我们进入ShareSDKDevInfo,把你不需要的平台注释掉或者删掉

以前的版本在这里注释掉,游戏中呼出菜单就不会再出现这些平台了,但是现在还需要再做一步,这个留到下文会讲到。
有些平台下面会有一个叫做BypassApproval的选项,这是绕过验证的意思,如果我们开启了这个bool那么就只能分享图文,功能不全。但是不需要账号就可以分享,如果我们想需要使用分享链接之类的更全面的功能,则需要关闭这个选项,但是这就需要另一个条件。

那就是除了ShareSDK的账号,我们想在哪个平台进行分享还要有这个平台的开发者账号,以微信平台为例,我们要现在微信开放平台申请一个账号
地址:https://open.weixin.qq.com/
注册完账号后可以创建一个移动应用。这里有一点值得提一下,关于应用签名,可以在网上下载一个获得签名的软件,把游戏和这个软件都装到手机上然后获取一下你的游戏的签名就可以了。
https://open.weixin.qq.com/cgi-bin/readtemplate?t=resource/app_download_android_tmpl&lang=zh_CN 在这里下载需要的获取签名软件
等待微信审核通过后你的应用会有一个AppID和一个AppSecret。把它填到Unity中ShareSDK脚本中

到了这一步,配置算是完成了一半了。根据官网的文档我们可以用ShareSDK创建实例,然后给它赋值,给它添加回调


ssdk.ShowPlatformList可以呼出平台UI面板,让你选择平台,这时候你会发现怎么注释掉的平台还是全都显示出来了。不知道这个是不是BUG,但是是有办法解决的。
这时把项目的包名改成和微信开放平台一致后,打出的包应该可以成功进行分享了,可是你很快就会发现,程序并没有走回调,这是为毛呢?
我们打开项目目录下\Plugins\Android\ShareSDK的AndroidManifest.xml配置文件,首先把最顶上的package = 改成和微信开放平台还有项目都一致的包名。拉下来我们会看到一个微信分享回调的配置,在原先的.wxapi.WXEntryActivity前面加上你的包名

这还不算完,因为配置文件里的包名改变了但是Jar包的Package的名称并没有改,这时候我们需要去下载一个Eclipse。好在博主懂一些JAVA
Eclipse还是很好用的,我们下载回来后使用它打开我们从GitHub下载过来的ShareSDK压缩包中的那个Android_Java_Demo文件夹,这是一个光放的安卓的Demo项目,

在Src中找到我们的wxapi包,右键Refactor->Rename,把它改成我们项目中的包名.wxapi然后在src上右键Export选择Java里的JAR file。

点击Nex在左上角把我们刚刚重命名过的包打上勾(需要几个打几个)把Jar包命名为DemoCallback.jar

然后我们进入项目的\Plugins\Android\ShareSDK\libs目录,用刚刚生成的DemoCallback.jar包替换这里的老Jar包。前面说的平台会全部显示出来的问题,只需要在这个目录删掉不需要使用的平台jar包即可。注意不要删掉sharesdk core的jar包
这时我们再打包运行发现可以正常使用回调了。如果有问题的话检查一下包名签名等。签名的问题我们可以打包的时候用Unity创建一个KeyStore设置好密码,以后生成别的包可以直接使用。生成keystore可以参考这里:http://www.cnblogs.com/heisaijuzhen/p/4346571.html
这时候我们使用的是ShareSDK自带的平台选择UI,如果想使用自己的UI可以使用无UI分享,自己在按钮上注册调用分享功能的实现,具体实现步骤没有太大区别只需要把这里最后的ShowPlatformList换为ShowShareContentEditor传入需要的平台和设置好的分享内容即可直接跳转到分享平台


到这里也就完毕了,IOS的话我现在没有MAC用还不好说,但是大致的流程都有了,也就是踩一踩坑的事了,有不懂的地方大家可以互相交流
在Unity3D项目中接入ShareSDK实现安卓平台微信分享功能(可使用ShareSDK默认UI或自定义UI)的更多相关文章
- Nacos(四):SpringCloud项目中接入Nacos作为配置中心
前言 通过前两篇文章: Nacos(二):Nacos与OpenFeign的对接使用 Nacos(三):SpringCloud项目中接入Nacos作为注册中心 相信大家已经对Nacos作为注册中心的基本 ...
- AndroidStudio用微信官方方法接入微信分享功能
转载请注明出处:http://www.cnblogs.com/wangoublog/p/5367950.html 现在微信的功能众所周知,用户量.影响力也是惊人,很多应用接入微信的功能已成为一种不可缺 ...
- android APP 中微信分享功能实现 的总结
//花了很长时间最终完成了微信分享功能,中间走了很多弯路,在此做一下小结,希望对在应用中使用到微信分享的朋友有所帮助. 主要问题就是下面两个: 1.为什么运行了项目之后,微信分享只是闪了一下就没有了? ...
- 如何正确的在项目中接入微信JS-SDK
微信JS-SDK的功能 如果你点进来,那么我相信你应该知道微信的JS-SDK可以用来做什么了.微信的官方文档描述如下. 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. ...
- unity3D项目中如何避免硬代码(C#)
平时做项目,代码中是不允许出现硬代码的,一般我们是怎么处理的呢? 那么硬代码又是什么呢? 我们俗称的硬代码:eg: label.text = "欢迎来到梦幻岛"; 这样我们俗 ...
- Nacos(二):SpringCloud项目中接入Nacos作为注册中心
前言 通过上一篇文章:Nacos介绍简单了解了Nacos的发展历程和现状,本文我们开始Nacos试水的第一步: 使用Nacos做注册中心 上周末(7.6)Nacos发布了V1.1.0版本,这次更新支持 ...
- 在ASP.NET项目中使用CKEditor +CKFinder实现图片上传功能
前言 之前的项目中一直使用的是FCKeditor,昨天突然有个想法:为什么不试一下新的CKEditor呢?于是花了大半天的时间去学习它的用法,现在把我的学习过程与大家分享一下. 谈起FCKeditor ...
- 【Android进阶】使用第三方平台ShareSDK实现新浪微博的一键分享功能
在公司最近的一个项目中,需要实现一键分享功能,在这里我使用的是第三方平台ShareSDK,将使用经验与大家分享 先看效果图 主界面 分享界面 由于第一次使用,所以需要先进行新浪授权,授权界面 分享结果 ...
- 在Android中使App高速、简单地支持新浪微博、微信、QQ、facebook等十几个主流社交平台的分享功能
前言 在如今的APP或者游戏中,分享功能差点儿已经成为标配.分享功能不但能够满足用户的需求.也能够为产品带来很多其它的用户,甚至能够对用户的行为.活跃度.年龄段等情况进行数据统计,使得软件公司能够对产 ...
随机推荐
- android 定时器(Handler Timer Thread AlarmManager CountDownTimer)
Android实现定时任务一般会使用以上(Handler Timer Thread AlarmManager CountDownTimer)五种方式.当然还有很多组合使用(比如Handler+Thre ...
- backbone中get和fetch的区别
我也是刚开始接触backbone.js对于里面的很多东西都看过,但是具体在使用起来还是有很多问题,其中一个就是get和fetch的区别,这个让我很纠结,都是获取模型的数据,干嘛要有两个呢?最近好像弄明 ...
- 关于Dubbo分布式服务
这篇文章写的详细,可参考 http://shiyanjun.cn/archives/1075.html
- Spring学习(18)--- AOP基本概念及特点
AOP:Aspect Oriented Programing的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序程序功能的统一维护的一种技术 主要的功能是:日志记录,性能统计,安全控制, ...
- Spring学习(1)----入门学习(附spring-framework下载地址)
(一)Spring是什么 Spring是一个开源框架,为了解决企业应用开发的复杂性而创建的,但现在已经不止应用于企业应用 是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架- 从大小和开销 ...
- 第一个CGI程序-----完全就是普通的c语言嘛‘(*∩_∩*)′
第一个CGI程序 ----完全就是普通的C语言嘛 '(*∩_∩*)′ PainterQ 2017年5月14日 上一篇博文里面叙述了Apache的安装和配置方法,恍恍惚惚我就拥有了自己的第一个http ...
- 代码管理器 TFS2013
多人开发代码管理器肯定是少不了的,出于项目需要在服务器上装了tfs2013用于代码管理,既然用vs进行开发自然选择微软自家的tfs.记录下安装和使用起来的过程. 安装 TFS2013(Team Fou ...
- 解决(防止)DDOS攻击的另一种思想
本方案适合作最后的处理方案. 在服务器遭到DDOS攻击后,防火墙.高防盾或者其他的方案都已经失去了效力,这时运维人员无任何方案可以处理,并且只能任由DDOS攻击或关闭服务器时,该方案可以有限的抵挡大部 ...
- css__金属质感的文字
金属质感的文字 网上看到的优秀思想!神奇的css~~~~ css div.a { width: 300px; text-align: center; color: white; background: ...
- idea live template高级知识, 进阶(给方法,类,js方法添加注释)(二)
上一篇文章(http://www.cnblogs.com/xzjxylophone/p/6994488.html) 是在 groovyScript中直接添加的代码,这个看起来是简单,粗暴,麻烦和不美观 ...