在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或者游戏中,分享功能差点儿已经成为标配.分享功能不但能够满足用户的需求.也能够为产品带来很多其它的用户,甚至能够对用户的行为.活跃度.年龄段等情况进行数据统计,使得软件公司能够对产 ...
随机推荐
- 基于angular的route实现单页面cnodejs
Angular ui-router 前言 之前不太理解前端怎么实现路由功能,以前知道有一种方式使用html5的pushState可以操作url才实现路由的功能,在实践项目中也用过一次,后来这种操作叫成 ...
- 不完全翻译:Threading in C#-Getting Started
Introduction(引入,介绍) and Concepts(概念) 原文地址:http://www.albahari.com/threading/ 注:水平有限不能全文翻译,备注了个别字段和短句 ...
- yield详解
生成器generator 一个函数调用时返回一个迭代器,那这个函数就叫做生成器(generator),如果函数中包含yield语法,那这个函数就会变成生成器 yeild能暂时的保留函数的运行位置,每次 ...
- CSS 简单了解(二)
我们第一天说了简单的HTML,第二天说了简单的CSS.那么今天.咱们就来说一说他们的结合如何使用吧! 首先说引用方式,和使用方法吧! 1.内部样式表.(放入<head>中) <hea ...
- [BZOJ4518]征途
4518: [Sdoi2016]征途 Time Limit: 10 Sec Memory Limit: 256 MB Description Pine开始了从S地到T地的征途. 从S地到T地的路可以 ...
- [0] WCF开发下,提示HTTP 无法注册 URL 进程不具有此命名空间的访问权限
Visual Studio以管理员的身份运行就可以了.
- 并归排序 (Java版本,时间复杂度为O(n))
自己上网查了一下并归排序的定义,把两个排序好的数组重新组成一个排序好的数组就是并归排序, 实现的方式有和多种,自己思考了一下,用java实现了一版本,思路如下,既然是排序好的,只需要依次比较两个数组, ...
- 细说Nullable<T>类型
目录一.简介二.语法和用法三.类型的转换和运算四.装箱与拆箱五.GetType()方法六.ToString()方法七.System.Nullable帮助类八.语法糖 一.简介 众所周知,值类型变量不能 ...
- centos6.7下安装mysql5.6.22同时解决中文乱码问题
1.下载 http://dev.mysql.com/downloads/mysql/ 或者使用wget下载: wget http://dev.mysql.com/get/Downloads/MySQL ...
- TCP札记
协议对于通信就像算法对于计算一样.算法允许人们在不必知道特定的CPU指令集的情况下指定或理解具体的计算形式.同样地,通信协议允许人们不依赖特定厂家的网络硬件来指定或理解数据通信. 网络协议通常分不同层 ...